The table below shows major differences between the standard shell (sh), Bourne Again SHell (bash), Korn shell (ksh) and the C shell (csh).
Table C-2. Differing Shell Features
| sh | bash | ksh | csh | Meaning/Action |
|---|---|---|---|---|
| $ | $ | $ | % | Default user prompt |
| >| | >| | >! | Force redirection | |
> file 2>&1 |
&> file or > file 2>&1 |
> file 2>&1 |
>& file |
Redirect stdout and stderr to file |
| { } | { } | Expand elements in list | ||
| `command` | `command` or $(command) | $(command) | `command` | Substitute output of enclosed command |
$HOME |
$HOME |
$HOME |
$home |
Home directory |
| ~ | ~ | ~ | Home directory symbol | |
~+, ~-, dirs |
~+, ~- |
=-, =N |
Access directory stack | |
var=value |
VAR=value |
var=value |
set var=value |
Variable assignment |
export var |
export VAR=value |
export var=val |
setenv var val |
Set environment variable |
${nnnn} |
${nn} |
More than 9 arguments can be referenced | ||
’'$@ |
$@ |
$@ |
All arguments as separate words | |
$# |
$# |
$# |
$#argv |
Number of arguments |
$? |
$? |
$? |
$status |
Exit status of the most recently executed command |
$! |
$! |
$! |
PID of most recently backgrounded process | |
$- |
$- |
$- |
Current options | |
. file |
source file or . file |
. file |
source file |
Read commands in file |
| alias x=’y’ | alias x=y | alias x y | Name x stands for command y | |
| case | case | case | switch or case | Choose alternatives |
| done | done | done | end | End a loop statement |
| esac | esac | esac | endsw | End case or switch |
exit n |
exit n |
exit n |
exit (expr) |
Exit with a status |
| for/do | for/do | for/do | foreach | Loop through variables |
set -f , set -o nullglob|dotglob|nocaseglob|noglob |
noglob | Ignore substitution characters for filename generation | ||
| hash | hash | alias -t |
hashstat | Display hashed commands (tracked aliases) |
hash cmds |
hash cmds |
alias -t cmds |
rehash | Remember command locations |
hash -r |
hash -r |
unhash | Forget command locations | |
| history | history | history | List previous commands | |
| ArrowUp+Enter or !! | r | !! | Redo previous command | |
!str |
r str |
!str |
Redo last command that starts with str |
|
!cmd:s/x/y/ |
r x=y cmd |
!cmd:s/x/y/ |
Replace x with y in most recent command starting with cmd, then execute. |
|
if [ $i -eq 5 ] |
if [ $i -eq 5 ] |
if ((i==5)) | if ($i==5) |
Sample condition test |
| fi | fi | fi | endif | End if statement |
| ulimit | ulimit | ulimit | limit | Set resource limits |
| pwd | pwd | pwd | dirs | Print working directory |
| read | read | read | $< | Read from terminal |
trap 2 |
trap 2 |
trap 2’' | onintr | Ignore interrupts |
| unalias | unalias | unalias | Remove aliases | |
| until | until | until | Begin until loop | |
| while/do | while/do | while/do | while | Begin while loop |
The Bourne Again SHell has many more features not listed here. This table is just to give you an idea of how this shell incorporates all useful ideas from other shells: there are no blanks in the column for bash. More information on features found only in Bash can be retrieved from the Bash info pages, in the “Bash Features” section.
More information:
You should at least read one manual, being the manual of your shell. The preferred choice would be info bash, bash being the GNU shell and easiest for beginners. Print it out and take it home, study it whenever you have 5 minutes.
See Appendix B if you are having difficulties to assimilate shell commands.
Prev: Common features
Home
Next: GNU Free Documentation License
Copyright (c) by the authors.
This section of the wiki is licensed under the terms of the GNU Free Documentation License.
See the LBook-licensing page for details.
Linux® is a registered trademark of Linus Torvalds.