Unit-5 Shell Programming
Unit-5 Shell Programming
Shell Programming
Shells are an important part of any Linux user session. We are provided several
different types of shells in Linux to accomplish tasks. Each shell has unique
properties. Hence, there are many instances where one shell is better than the other
for specific requirements.
This makes it important for us to be aware about the different types of shells
available in Linux. In this tutorial, we will discuss what is a shell and why is it
important.
Whenever a user logs in to the system or opens a console window, the kernel runs a
new shell instance. The kernel is the heart of any operating system.
A shell is a program that acts as an interface between a user and the kernel. It
allows a user to give commands to the kernel and receive responses from it. Through
a shell, we can execute programs and utilities on the kernel. Hence, at its core, a
shell is a program used to execute other programs on our system.
Being able to interact with the kernel makes shells a powerful tool. Without the
ability to interact with the kernel, a user cannot access the utilities offered by their
machine’s operating system.
Let’s understand the major shells that are available for the Linux environment.
Each of these shells has properties that make them highly efficient for a specific type
of use over other shells. So let us discuss the different types of shells in Linux along
with their properties and features.
1. The Bourne Shell (sh)
Developed at AT&T Bell Labs by Steve Bourne, the Bourne shell is regarded as the
first UNIX shell ever. It is denoted as sh. It gained popularity due to its compact
nature and high speeds of operation.
This is what made it the default shell for Solaris OS. It is also used as the default
shell for all Solaris system administration scripts. Start reading about shell scripting
here.
The complete path-name for the Bourne shell is /bin/sh and /sbin/sh. By default,
it uses the prompt # for the root user and $ for the non-root users.
More popularly known as the Bash shell, the GNU Bourne-Again shell was designed
to be compatible with the Bourne shell. It incorporates useful features from different
types of shells in Linux such as Korn shell and C shell.
It allows us to automatically recall previously used commands and edit them with
help of arrow keys, unlike the Bourne shell.
The complete path-name for the GNU Bourne-Again shell is /bin/bash. By default,
it uses the prompt bash-VersionNumber# for the root user and bash-
VersionNumber$ for the non-root users.
3. The C Shell (csh)
The C shell was created at the University of California by Bill Joy. It is denoted as
csh. It was developed to include useful programming features like in-built support
for arithmetic operations and a syntax similar to the C programming language.
The complete path-name for the C shell is /bin/csh. By default, it uses the
prompt hostname# for the root user and hostname% for the non-root users.
4. The Korn Shell (ksh)
The Korn shell was developed at AT&T Bell Labs by David Korn, to improve the
Bourne shell. It is denoted as ksh. The Korn shell is essentially a superset of the
Bourne shell.
The Korn shell runs scripts made for the Bourne shell, while offering string, array
and function manipulation similar to the C programming language. It also supports
scripts which were written for the C shell. Further, it is faster than most different
types of shells in Linux, including the C shell.
The complete path-name for the Korn shell is /bin/ksh. By default, it uses the
prompt # for the root user and $ for the non-root users.
5. The Z Shell (zsh)
Let us summarise the different shells in Linux which we discussed in this tutorial in
the table below.
/bin/sh and
Bourne shell (sh) # $
/sbin/sh
Wrapping up
Shells are one of, if not the most powerful tools available to a Linux user. Without
shells, it is practically impossible for a person to utilise the features and
functionality offered by the kernel installed on their system.
While we covered only the most commonly used types of shells in Linux, there are
many other shell types worth exploring.
We hope this tutorial was able to help you to get understand the concept of shells,
along with the properties of the different types of shells in Linux. If you have any
feedback, queries, or suggestions, feel free to reach out to us in the comments
below.
CSH vs BASH
Summary: