A shell is a command-line interpreter and like for the editors: Everyone has his favourite. Several version, each with its own features got introduced in the last 50 years. In this section we are going to briefly explain the history of the UNIX shell and to highlight the key differences between the main ones, but don't forget: the core ideas about shells are the same in everyone.
In 1971, Ken Thompson (of Bell Labs) developed the V6 shell (/bin/sh), the first shell for UNIX. This independent user program was inspired by Multics (an operating system developed by the American software engineer Glenda Schroeder, in 1965) and introduced a compact syntax for piping (concept of a sequence of chained processes where the output of a process feeds as input to the next one) and for redirection (stays for the deviation of outputs to user-specified locations), that has survived into all modern shells. This shell was only capable of acting as an interactive shell (command interpreter), to invoke commands and view results, it was not able to script.
After this first shell, the next one was the PWD shell created in 1975 by John Mashey. This upward-compatible version of the Thompson shell focused on making shell programming practical. Comparing it to his predecessor, new features were added such as variables, user-executable shell scripts, interrupt-handling and an extension of control structures (that were integrated to the shell itself, in fact in the older versions they were "outside" the shell).
A couple of years later the development of new and more capable shells got at its maximum and several shells, all with different characteristics, were introduced. In the next section the most influential ones are briefly presented.
The Bourne shell (sh), introduced in 1977 by Stephen Bourne (also at Bell Labs), is a complete redesign of the "original" shell. It was backward compatible since it shared with its predecessor all the basics functions, but it introduced a more functional language capable of better interacting with the operating system. Its language was influenced by ALGOL 68 (Algorithmic Language 1968), an imperative computer programming language. This shell is known by users because of its characteristic default command line prompt character and the use of the dollar sign. It still remains a useful and popular shell today. There are many alternatives to this shell, here are listened only some of them: Almquist shell (ash), Debian Almquist shell (dash), Z shell (zsh), Bourne-Again shell (bash) and Korn shell (ksh). To the last two we come back later.
Another important shell that was developed in this period is the C shell (csh). It was developed by Bill Joy at the University of California around 1978. This shell, that has strong resemblances to C commands, introduced for the first time a large number of features for interactive work, job control (the ability to stop, start, and pause commands) and command history. It was upgraded 5 years later by the Tenex C shell (tcsh), which is an improved version of the original C shell which includes many functions from the Tenex system.
The Korn shell, that was mentioned above, designed by David Korn, is a commercial product that incorporates the best features of the Bourne and the C shells. One of its most distinguishing feature is its predisposition to be used as scripting language. Besides it is also backward-compatible with the original Bourne shell.
The Bourne-Again shell is very similar to the Korn shell, with the key difference that it is free. It was developed for the GNU project, by Brian Fox around 1988, with the idea to replace all the commercial UNIX utilities on the market with free ones. Over the years, this shell has become the most popular Bourne shell derivate, because of two main reasons: it is backward-compatible for scripting and it was heavily supported by the developer team that performed several improvements and bug fixes over the years (a second version - bash 2.0 - was released in 1996, which shows many new features like the command-line editing modes, which let you fix mistakes or modify previous commands).
Throughout the last 50 years, the independence of the shell from the UNIX operating system has led to the development of several shells, each with different features, but not all achieved the same success and distribution. Bourne shell derivatives continue to be the primary shells in use, in fact the Bourne shell is still known as the "standard" shell, and also the Bourne-Again shell is becoming increasingly popular, because it includes the best features of the C and Korn shells as well as several advantages of its own. Even though, several shells were introduced in the last few decades the main concepts and ideas of the early shells remain the same even several years later, showing that the shell has been improved but not substantially changed.