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

  1. This feature was not in the orginal version, but has since become almost standard.
  2. 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.
  3. The Vi emulation of this shell is thought by many to be incomplete.
  4. This feature is not standard but unoffical patches exist to perform this.
  5. A version called 'pdksh' is freely available, but does not have the full functionality of the AT&T version.
  6. This can be done via the shells programmable completion mechanism.
  7. Only by specifing a file via the ENV environment variable.