A shell is a program that interprets and runs the commands typed at the console by the user. The shell sends requests to the kernel, which executes them.
UNIX comes with various shells, the most common being the C Shell, the Bourne Shell and the Korn Shell. IRIX adds the Tenex Shell. linux includes both the Tenex Shell and the Bourne Again Shell. Each shell can be programmed. Programs containing shell commands, are called C shell scripts, Bourne shell scripts, Korn shell scripts, etc. They each have their advantages. “The general consensus of views from users familiar with both (C and Bourne) shells appears to be that the C shell is superior for interactive work, because of its process control features, while the Bourne shell has more powerful language constructs, and so is better for use in shell scripts”.
The Tenex shell, also known as the T Shell, is a superset of the C shell, in that it includes all what the C shell has to offer, plus additional functionalities. Written in the late 80s, it is in the public domain. The Korn Shell, also written in the late 80s, incorporates features and functionality of both the C and Bourne shells, while retaining the speed of the Bourne shell (with which it is also upward compatible). The same might be true of the Bourne Again shell as it combines the best of the Korn Shell and the Tenex Shell. Typical Linux installations use the bash shell (Bourne Again SHell) as its default shell. bash contains the same feature as the Bourne and Korn shells, while retaining the flexibility and the features of the C and Tenex shells. At the Research Computing Support Group, we tend to use the T shell as the default shell on IRIX, and use bash (the Bourne Again SHell) with linux.