|
|
|
|
3.2.3.2. The shell
3.2.3.2.1.
What is a shell?
When I was looking for an appropriate explanation on the concept
of a shell, it gave me more trouble than I expected. All
kinds of definitions are available, ranging from the simple
comparison that "the shell is the steering
wheel of the car", to the vague definition in the Bash
manual which says that "bash is an
sh-compatible command language interpreter," or an even more
obscure expression, "a shell manages the
interaction between the system and its users". A shell is
much more than that.
A shell can best be compared with a way of talking to the
computer, a language. Most users do know that other language, the
point-and-click language of the desktop. But in that language the
computer is leading the conversation, while the user has the
passive role of picking tasks from the ones presented. It is very
difficult for a programmer to include all options and possible uses
of a command in the GUI-format. Thus, GUIs are almost always less
capable than the command or commands that form the backend.
The shell, on the other hand, is an advanced way of
communicating with the system, because it allows for two-way
conversation and taking initiative. Both partners in the
communication are equal, so new ideas can be tested. The shell
allows the user to handle a system in a very flexible way. An
additional asset is that the shell allows for task automation.
3.2.3.2.2.
Shell types
Just like people know different languages and dialects, the
computer knows different shell types:
-
sh or Bourne
Shell: the original shell still used on UNIX systems and in
UNIX related environments. This is the basic shell, a small program
with few features. When in POSIX-compatible mode, bash will emulate this shell.
-
bash or Bourne
Again SHell: the standard GNU shell, intuitive and flexible.
Probably most advisable for beginning users while being at the same
time a powerful tool for the advanced and professional user. On
Linux, bash is the standard shell for common
users. This shell is a so-called superset of the
Bourne shell, a set of add-ons and
plug-ins. This means that the Bourne
Again SHell is compatible with the Bourne shell: commands that work in sh, also work in bash.
However, the reverse is not always the case. All examples and
exercises in this book use bash.
-
csh or C
Shell: the syntax of this shell resembles that of the C
programming language. Sometimes asked for by programmers.
-
tcsh or Turbo C
Shell: a superset of the common C
Shell, enhancing user-friendliness and speed.
-
ksh or the Korn shell: sometimes appreciated by people
with a UNIX background. A superset of the Bourne shell; with standard configuration a
nightmare for beginning users.
The file /etc/shells gives an overview
of known shells on a Linux system:
mia:~> cat /etc/shells
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
|
|
Fake Bourne shell |
|
Note that /bin/sh is usually a link to
Bash, which will execute in
Bourne shell compatible mode when
called on this way.
|
Your default shell is set in the /etc/passwd file, like this line for user
mia:
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash
|
To switch from one shell to another, just enter the name of the
new shell in the active terminal. The system finds the directory
where the name occurs using the PATH
settings, and since a shell is an executable file (program), the
current shell activates it and it gets executed. A new prompt is
usually shown, because each shell has its typical appearance:
mia:~> tcsh
[mia@post21 ~]$
|
3.2.3.2.3.
Which shell am I using?
If you don't know which shell you are using, either check the
line for your account in /etc/passwd or
type the command
echo $SHELL
|
|
|