Chapter 11
Choosing and Using Shells
She sells seashells on the seashoreThe shells she sells are seashells, I’m sureSo if she sells seashells on the seashoreThen I’m sure she sells seashore shells.
—Terry Sullivan, 1908
On traditional Unix systems, the standard shell (/bin/sh) for all users and for system scripts is the Bourne shell. On most GNU/Linux distributions, bash has always been the default shell. More recently, some GNU/Linux systems use dash as the system shell (/bin/sh) but retain bash for interactive shells, normally as /usr/bin/bash. There are many different shells, each written for a particular purpose and with its own history, which leads to each having a slightly different syntax and feature set.
This chapter looks at the shells available, where they came from, and what they do. This book focuses mainly on bash, with reference to the Bourne shell, but it is important to know about the other popular shells too. This chapter also hopes to give some of the flavor of the different environments in which a shell script might find itself running, and how that environment could affect the operation of the script.
There is no real need to use the same shell for interactive use as for shell scripting. The main benefit to using the same shell for both is that you can easily test your syntax or try out an idea interactively to see how to make it work before writing it in a script. On the other hand, it may be more beneficial to use an interactive shell that has the features ...