## 3.5. Differing Features

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.

Copyright © 2003 O'Reilly & Associates. All rights reserved.