For most Windows users, “the shell“” is an almost entirely new concept. Many might familar with a command-line or “dos box”, but this is often just limited to inputting a command based on troubleshooting article they read. On the other hand, most UNIX users are very familiar with “the shell“, and for them it is more thatn just where you input commands and get output on your screen. Often, this is only contact administrator have with the system, particularly if this is a server and usually does not normal users running about. In such cases, graphical applications cannot be run at all as the necessary software has not been installed. For many, the fact that you do not even need to install a graphical interface can be suprising, if not confusing.
Because the Linux GUI has become so easy to use, it is possible for normal users that you can go for quite a long time without having to input commands at a shell prompt. If your only interaction with the operating system is logging into the GUI and starting applications, most of this entire section can only serve to satisfy your curiosity. Obviously, if all you ever do is start a graphical application, then understanding about shell is not all that important. However, if you are like most Linux users, understanding the basic workings of the shell will do wonders to improve your ability to use the system to its fullest extent. For the Linux administrator, however, knowing how to move about the shell comfortably needs to be second nature.
Up to this point, we have referred to the shell as an abstract entity. In fact, in most texts, it is usually referred to as simply “the shell”, although there are many different shells that you can use, and there is always a program that must be started before you can interact with “the shell”. Each has its own characteristics (or even quirks), but all behave in the same general fashion. Because the basic concepts are the same, I will avoid talking about specific shells until later.
In this chapter, we are going to cover the basic aspects of the shell. We’ll talk about how to issue commands and how the system responds. Along with that, we’ll cover how commands can be made to interact with each other to provide you with the ability to make your own commands. We’ll also talk about the different kinds of shells, what each has to offer, and some details of how particular shells behave.