The _shell_ is a program that allows you to interact with your
computer. It’s called a shell because it provides an environment for
you to work in—sort of a little electronic home for you as you
compute. (Think hermit crab.)
The simplest function of the shell is to launch other programs. You
type the name of the program you want to run, followed by the
arguments you want, and the shell asks the system to run the program
for you.
Of course, graphical windowing systems also fill this need.
Technically, Windows 95 provides a graphical shell, and the X Window
system is another kind of graphical shell. But “shell” is commonly
used to mean “command-line shell.”
Needless to say, the hackers who work on shells aren’t satisfied
with simply launching commands. Your shell has a bewildering number
of convenient and powerful features if you would like to take
advantage of them.
There are countless different shells available; most are based on
either the _Bourne shell_ or the _C shell_, two of the oldest
shells. The original Bourne shell’s program name is sh, while csh is
the C shell. Bourne shell variants include the Bourne Again Shell
from the GNU project (bash, the Debian default), the Korn shell
(ksh), and the Z shell (zsh). There is also ash, a traditional
implementation of the Bourne shell. The most common C shell variant
is tcsh (the t pays tribute to the TENEX and TOPS-20 operating
systems, which inspired some of tcsh’s improvements over csh).
bash is probably the best choice for new users. It is the default
and has all the features you’re likely to need. But all the shells
have loyal followings; if you want to experiment, install some
different shell packages and change your shell with the chsh
command. Just type chsh, supply a password when asked, and choose a
shell. When you next log in, you’ll be using the new shell.