The shell provides you with an interface to the UNIX system. It acts as an intermediate system between user and the Kernel. It gathers input from you and executes programs based on that input. When a program finishes executing, it displays that program’s output. Shell takes the inputs from the User and translates it in to the form in which the kernel can understand it.
A shell is an environment in which we can run our commands, programs, and shell scripts. There are different flavors of shells, just as there are different flavors of operating systems. Each flavor of shell has its own set of recognized commands and functions.
The prompt, $, which is called command prompt, is issued by the shell. While the prompt is displayed, you can type a command.
The shell reads your input after you press Enter. It determines the command you want executed by looking at the first word of your input. The appearance of this command prompt indicates the whole work with the previous command was completed. A word is an unbroken set of characters. Spaces and tabs separate words.
Following is a simple example of date command which displays current date and time:
Thu Jan 25 03:30:19 IST 2009
You can customize your command prompt using environment variable PS1, in the file .profile, present in the home path.
Types of Shells:
In UNIX there are two major types of shells:
- The Bourne shell. If you are using a Bourne-type shell, the default prompt is the $ character.
- The C shell. If you are using a C-type shell, the default prompt is the % character.
There are again various subcategories for Bourne Shell which are listed as follows:
- Bourne shell ( sh)
- Korn shell ( ksh)
- Bourne Again shell ( bash)
- POSIX shell ( sh)
The different C-type shells follow:
- C shell ( csh)
- TENEX/TOPS C shell ( tcsh)
The Bourne shell was the first shell to appear on UNIX systems, thus it is referred to as “the shell”.
The Bourne shell is usually installed as /bin/sh on most versions of UNIX. For this reason, it is the shell of choice for writing scripts to use on several different versions of UNIX.
The basic concept of a shell script is a list of commands, which are listed in the order of execution. A good shell script will have comments, preceded by a pound sign, #, describing the steps.
There are conditional tests, such as value A is greater than value B, loops allowing us to go through massive amounts of data, files to read and store data, and variables to read and store data, and the script may include functions.
Shell scripts and functions are both interpreted. This means they are not compiled.
Assume we create a test.sh script. It is good to have the extension of the script files as .sh. Before you add anything else to your script, you need to alert the system that a shell script is being started. This is done by the shell interpreter. This indicates the type of programming done in the following lines (like Perl, Shell).
You can put your comments in your script as follows:
# Author : bvlsuccess
# Date : 01011989
# Revision : 3.1
# Script follows here:
Now you save the above content and make this script executable as follows:
$chmod +x test.sh
Now you have your shell script ready to be executed as follows:
This would produce following result:
Bvlsuccess.sh file.txt bvl.dat
test.sh unix1-communication.htm unix-environment3.htm
Note: To execute your any program available in current directory you would execute using ./program_name
Extended Shell Scripts:
Shell scripts have several required constructs that tell the shell environment what to do and when to do it. Of course, most scripts are more complex than above one.
The shell is, after all, a real programming language, complete with variables, control structures, and so forth. No matter how complicated a script gets, however, it is still just a list of commands executed sequentially.
Following script use the read command which takes the input from the keyboard and assigns it as the value of the variable PERSON and finally prints it on STDOUT.
# Author : bvl
# Script follows here:
echo "What is your name?"
echo "Hello, $human"
Here is sample run of the script:
What is your name?