The following table displays features that are different among the three shells.
sh | ksh | csh | Meaning/Action |
$ | $ | % | Prompt. |
| >| | >! | Force redirection. |
| | >>! | Force append. |
> file 2>&1 | > file 2>&1 | >& file | Combine stdout and stderr. |
| | { } | Expand elements in list. |
‘ ‘ | ‘ ‘ | ‘ ‘ | Substitute output of enclosed command.
|
| $( ) | | Substitute output of enclosed command.
(Preferred form.)
|
$HOME | $HOME | $home | Home directory. |
| ~ | ~ | Home directory symbol. |
var=value | var=value | set var=value | Variable assignment. |
export var | export var=val | setenv var val | Set environment variable.
|
| ${nn} | | More than nine args can be referenced.
|
"$@" | "$@" | | All args as separate words.
|
$# | $# | $#argv | Number of arguments.
|
$? | $? | $status | Exit status.
|
$! | $! | | Background exit status.
|
$- | $- | | Current options.
|
. file | . file | source file | Read commands in file.
|
| alias x=y | alias x y | Name x stands for y.
|
case | case | switch/case | Choose alternatives.
|
| cd ~- | popd/pushd | Switch directories.
|
done | done | end | End a loop statement.
|
esac | esac | endsw | End case or switch.
|
exit [n] | exit [n] | exit [(expr)] | Exit with a status.
|
for/do | for/do | foreach | Loop through variables.
|
| print -r | glob | Ignore echo escapes.
|
hash | alias -t | hashstat | Display hashed commands (tracked aliases).
|
hash cmds | alias -t cmds | rehash | Remember command locations.
|
hash -r | PATH=$PATH | unhash | Forget command locations.
|
| history | history | List previous commands.
|
| r | !! | Redo previous command.
|
| r str | !str | Redo command that starts with str.
|
| r x=cmd | !cmd:s/x/y | Edit command, then execute.
|
if [ $i -eq 5 ] | if ((i==5)) | if ($i==5) | Sample if statement.
|
fi | fi | endif | End if statement.
|
ulimit | ulimit | limit | Set resource limits.
|
pwd | pwd | dirs | Print working directory.
|
read | read | $< | Read from standard input.
|
trap 2 | trap 2 | onintr | Ignore interrupts.
|
| unalias | unalias | Remove aliases.
|
until/do | until/do | | Begin until loop.
|
while/do | while/do | while | Begin while loop.
|