Korn vs Bash vs Shell

Overview different types of shells

Code:

                                     sh   csh  ksh  bash tcsh zsh  rc   es
Job control                          N    Y    Y    Y    Y    Y    N    N
Aliases                              N    Y    Y    Y    Y    Y    N    N
Shell functions                      Y(1) N    Y    Y    N    Y    Y    Y
"Sensible"Input/Output redirection  Y    N    Y    Y    N    Y    Y    Y
Directory stack                      N    Y    Y    Y    Y    Y    F    F
Command history                      N    Y    Y    Y    Y    Y    L    L
Command line editing                 N    N    Y    Y    Y    Y    L    L
ViCommand line editing              N    N    Y    Y    Y(3) Y    L    L
EmacsCommand line editing           N    N    Y    Y    Y    Y    L    L
RebindableCommand line editing      N    N    N    Y    Y    Y    L    L
User name look up                    N    Y    Y    Y    Y    Y    L    L
Login/Logout watching                N    N    N    N    Y    Y    F    F
Filename completion                  N    Y(1) Y    Y    Y    Y    L    L
Username completion                  N    Y(2) Y    Y    Y    Y    L    L
Hostname completion                  N    Y(2) Y    Y    Y    Y    L    L
History completion                   N    N    N    Y    Y    Y    L    L
Fully programmable Completion        N    N    N    N    Y    Y    N    N
MhMailbox completion                N    N    N    N(4) N(6) N(6) N    N
CoProcesses                         N    N    Y    N    N    Y    N    N
Builtin artithmetic evaluation       N    Y    Y    Y    Y    Y    N    N
Can follow symbolic links invisibly  N    N    Y    Y    Y    Y    N    N
Periodic command execution           N    N    N    N    Y    Y    N    N
CustomPrompt(easily)               N    N    Y    Y    Y    Y    Y    Y
SunKeyboardHack                    N    N    N    N    N    Y    N    N
SpellingCorrection                  N    N    N    N    Y    Y    N    N
ProcessSubstitution                 N    N    N    Y(2) N    Y    Y    Y
UnderlyingSyntax                    sh   csh  sh   sh   csh  sh   rc   rc
FreelyAvailable                     N    N    N(5) Y    Y    Y    Y    Y
ChecksMailbox                       N    Y    Y    Y    Y    Y    F    F
TtySanityChecking                  N    N    N    N    Y    Y    N    N
Can cope with large argument lists   Y    N    Y    Y    Y    Y    Y    Y
Has non-interactive startup file     N    Y    Y(7) Y(7) Y    Y    N    N
Has non-login startup file           N    Y    Y(7) Y    Y    Y    N    N
Can avoid user startup files         N    Y    N    Y    N    Y    Y    Y
Can specify startup file             N    N    Y    Y    N    N    N    N
Low level command redefinition       N    N    N    N    N    N    N    Y
Has anonymous functions              N    N    N    N    N    N    Y    Y
ListVariables                       N    Y    Y    N    Y    Y    Y    Y
Full signal trap handling            Y    N    Y    Y    N    Y    Y    Y
File no clobber ability              N    Y    Y    Y    Y    Y    N    F
Local variables                      N    N    Y    Y    N    Y    Y    Y
Lexically scoped variables           N    N    N    N    N    N    N    Y
Exceptions                           N    N    N    N    N    N    N    Y

Key to the table above.

Y Feature can be done using this shell.

N Feature is not present in the shell.

F Feature can only be done by using the shells function mechanism.

L The readline library must be linked into the shell to enable this Feature.

Notes to the table above

1.This feature was not in the original 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.TheVi emulation of this shell is thought by many to be
   incomplete.4.This feature is not standard but unofficial 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 specifying a file via the ENV environment variable.

 Thanks