Initially, the Unix OS used a shell program called the Bourne shell. Then, eventually, many more shell programs were developed for different flavors of Unix. The following is some brief information about different shells:
- sh—Bourne shell
- csh—C shell
- ksh—Korn shell
- tcsh—enhanced C shell
- bash—GNU Bourne Again shell
- zsh—extension to bash, ksh, and tcsh
- pdksh—extension to ksh
A brief comparison of various shells is presented in the following table:
Feature |
Bourne |
C |
TC |
Korn |
Bash |
Aliases |
no |
yes |
yes |
yes |
yes |
Command-line editing |
no |
no |
yes |
yes |
yes |
Advanced pattern matching |
no |
no |
no |
yes |
yes |
Filename completion |
no |
yes |
yes |
yes |
yes |
Directory stacks (pushd and popd) |
no |
yes |
yes |
no |
yes |
History |
no |
yes |
yes |
yes |
yes |
Functions |
yes |
no |
no |
Yes |
yes |
Key binding |
no |
no |
yes |
no |
yes |
Job control |
no |
yes |
yes |
yes |
yes |
Spelling correction |
no |
no |
yes |
no |
yes |
Prompt formatting |
no |
no |
yes |
no |
yes |
What we see here is that, generally, the syntax of all these shells is 95% similar.
In this book, we are going to follow Bash shell programming.