Shell Programming
Bourne shell (sh) lacks job control, but it has good support for shell programming and is standard on all Unix systems; we'll study this one.
Korn shell (ksh) is an extension of sh; it is suitable for both interactive use and shell programming. Bash (Bourne-again shell) is a clone of the Korn shell.Csh introduced job control. It is good for interactive use, but it is bad for writing shell scripts (e.g. nested ifs don't always work). It's like C syntax.
Tcsh is an enhanced but completely compatible version of the Berkeley UNIX C shell. It is a command language interpreter usable both as an interactive login shell and a shell script command processor. It includes a command-line editor, programmable word completion, spelling correction, a history mechanism and job control.
Handbook:
O'Reilly Learning the Bash Shell
O'Reilly Lerning the Korn Shell
O'Reilly Using csh & tcsh