What is the Shell?
- A shell is any program that provides an interactive environment for users
- Whenever you login to a Unix system you are placed in a program called the shell. All of your work is done within the shell.
- The shell is your interface to the operating system. It acts as a command interpreter; it takes each command and passes it to the operating system. It then displays the results of this operation on your screen.
There are several shells in widespread use. The most common ones are described
There is a family of shells available on linux/unix:
Shell Symbol Prompt Description bourne sh $ Original Unix shell written by Steve Bourne of Bell Labs. Available on all UNIX systems. Does not have the interactive facilites provided by modern shells such as the C shell and Korn shell. The Bourne shell does provide an easy to use language with which you can write shell scripts. korn ksh $ Written by David Korn of bell labs. It is now provided as the standard shell on Unix systems. Provides all the features of the C and TC shells together with a shell programming language similar to that of the original Bourne shell. c shell csh % Written at the University of California, Berkley. As it name indicates, it provides a C like language with which to write shell scripts. bourne again bash $ Public domain shell written by the Free Software Foundation under their GNU initiative. Ultimately it is intended to be a full implementation of the IEEE Posix Shell and Tools specification. Widely used within the academic commnity. Provides all the interactive features of the C shell (csh) and the Korn shell (ksh). Its programming language is compatible with the Bourne shell (sh).
- Many more public domain shells are available like ash, zsh ...
Purpose of shells
- Command line interpreter - Reading commands from users and executing them
- Programming languages - Processing a collection of commands in a file
- Job control language -
- enables command sto be executed at a later time
- allows commands to be run in the background
- allows commands to be chained together
- enables command input/output to be redirected