A Shell, as we remarked in module-1, offers a user an interface with the OS kernel. A
user obtains OS services through an OS shell. When a user logs in, he has a login shell.
The login shell offers the first interface that the user interacts with either as a terminal
console, or through a window interface which emulates a terminal.
A user needs this
command interface to use an OS, and the login shell immediately provides that (as soon
as user logs in). Come to think of it, a shell is essentially a process which is a command
interpreter!! In this module we shall explore ways in which a shell supports enhancement
in a user’s productivity.
13.1 Facilities Offered by Unix Shells
In Figure 13.1, we show how a user interacts with any Unix shell. Note that a shell
distinguishes between the commands and a request to use a tool. A tool may have its own
operational environment. In that case shell hands in the control to another environment.
As an example, if a user wishes to use the editor tool vi, then we notice that it has its own
states like edit and text mode, etc. In case we have a built-in command then it has a well-
understood interpretation across all the shells. If it is a command which is particular to a
specific shell, then it needs interpretation in the context of a specific shell by interpreting