What is a shell?

A shell is a special-purpose utility designed to read commands typed by a user and execute appropriate programs in response to those commands. Shell is also known as command interpreter ot command line interface (CLI). On some operating systems the shell is an integral part of the kernel, on linux however, the shell is a user process. Many different shells exist and different shells can be used simultaneously by different users on the same computer. Here are a few of the most important shells in introduced over time:

    • Bourne shell (sh): This is the oldest of the widely used shells, and was written by Steve Bourne. It was the standard shell for Seventh Edition UNIX. The Bourne shell contains many of the features familiar in all shells: I/O redirection, pipelines, filename generation (globbing), variables, manipulation of environment variables, command substitution, background command execution, and functions. All later UNIX implementations include the Bourne shell in addition to any other shells they might provide.
    • C shell (csh): This shell was written by Bill Joy at the University of California at Berkeley. The name derives from the resemblance of many of the flow-control constructs of this shell to those of the C programming language. The C shell provided several useful interactive features unavailable in the Bourne shell, including command history, command-line editing, job control, and aliases. The C shell was not backward compatible with the Bourne shell. Although the standard interactive shell on BSD was the C shell, shell scripts (described in a moment) were usually written for the Bourne shell, so as to be portable across all UNIX implementations.
    • Korn shell (ksh): This shell was written as the successor to the Bourne shell by David Korn at AT&T Bell Laboratories. While maintaining backward compatibility with the Bourne shell, it also incorporated interactive features similar to those provided by the C shell.
    • Bourne again shell (bash): This shell is the GNU project’s reimplementation of the Bourne shell. It supplies interactive features similar to those available in the C and Korn shells. The principal authors of bash are Brian Fox and Chet Ramey. Bash is probably the most widely used shell on Linux.

Various shells are designed not only for interactive use, but also for the interpretation of shell scripts, which are text files containing shell commands. For this purpose, a shell has facilities typically associated with programming languages, including variables, loop and conditional statements, I/O commands, and functions.