UNIX shell differences
This table below lists most features that I think would make you choose
one shell over another. It is not intended to be a definitive list and does
not include every single possible feature for every single possible shell. A
feature is only considered to be in a shell if in the version that comes with
the operating system, or if it is available as compiled directly from the
standard distribution.
sh csh ksh bash tcsh
Job control N Y Y Y Y
Aliases N Y Y Y Y
Shell functions Y(1) N Y Y N
"Sensible" Input/Output redirection Y N Y Y N
Directory stack N Y Y Y Y
Command history N Y Y Y Y
Command line editing N N Y Y Y
Vi Command line editing N N Y Y Y(3)
Emacs Command line editing N N Y Y Y
Rebindable Command line editing N N N Y Y
User name look up N Y Y Y Y
Login/Logout watching N N N N Y
Filename completion N Y(1) Y Y Y
Username completion N Y(2) Y Y Y
Hostname completion N Y(2) Y Y Y
History completion N N N Y Y
Fully programmable Completion N N N N Y
Mh Mailbox completion N N N N(4) N(6)
Co Processes N N Y N N
Builtin artithmetic evaluation N Y Y Y Y
Can follow symbolic links N N Y Y Y
Periodic command execution N N N N Y
Custom Prompt (easily) N N Y Y Y
Sun Keyboard Hack N N N N N
Spelling Correction N N N N Y
Process Substitution N N N Y(2) N
Underlying Syntax sh csh sh sh csh
Freely Available N N N(5) Y Y
Checks Mailbox N Y Y Y Y
Tty Sanity Checking N N N N Y
Can cope with large argument lists Y N Y Y Y
Has non-interactive startup file N Y Y(7) Y(7) Y
Has non-login startup file N Y Y(7) Y Y
Can avoid user startup files N N N Y N
Can specify startup file N N Y Y N
Notes to the table above
- This feature was not in the orginal version, but has since become
almost standard.
- This feature is fairly new and so is often not found on many
versions of the shell, it is gradually making its way into standard
distribution.
- The Vi emulation of this shell is thought by many to be
incomplete.
- This feature is not standard but unoffical patches exist to perform
this.
- A version called 'pdksh' is freely available, but does not have the
full functionality of the AT&T version.
- This can be done via the shells programmable completion
mechanism.
- Only by specifing a file via the ENV environment variable.