Linux, in common with other UNIX-like systems, makes various shell programs available to users. All these shells have approximately the same objectives to provide a useful interactive interface between the user and the system, and also to provide a simple programming interface which allows collections of commands to be bolted together and executed as though they were ordinary Linux system commands. In this chapter we shall examine the interactive interface of one particular shell - bash (the Bourne Again SHell).
Bash is distributed by the Free Software Foundation as a Bourne shell compatible program which also incorporates many of the best features of other shells. It is arguably the best shell available for all-round functionality and is supplied with most Linux distributions.