



(14 ratings)
In
Linux the command line interpreter is known as the shell. Whatever
you type at the command line is understood and interpreted by
a program and then that program gives you an output after executing
your command. This program that understands what you type is
called the shell.
Linux comes with quite a few shells such as Bourne Shell, Bourne
Again Shell, C Shell, Korn Shell, etc. The default shell for
Redhat Linux is ' bash ' which is very popular since being the
default, most users start by learning bash. I shall talk about
the bash shell only in this article.
Windows users would be familiar with a program called command.com
which had to be present for the OS to boot. Command.com is the
Windows equivalent of the Linux shell.
Typing the following at the shell
$ echo $SHELL
would give you the name of the current shell you are using.
It would most probably be the bash shell in case you are a new
user and have been assigned the default shell.
The bash shell is actually a program that is located at /bin/bash
and is executed by Linux the moment a user successfully logs
in after entering his user-pass. Once this shell starts, it
takes over control and accepts all further user commands. The
bash shell presents a $ prompt by default (for normal user accounts).
You can change this prompt to whatever you like but leaving
it at the default is best. Other shells present different prompts.
Changing the prompt is explained below.
-
Shell Environment
All the programs that run under Linux are called as processes.
Processes run continuously in Linux and you can kill or suspend
different processes using various commands. When you start a
program a new process is created. This process runs within what
is called an environment. This particular environment would
be having some characteristics which the program/process may
interact with. Every program runs in its own environment. You
can set parameters in this environment so that the running program
can find desired values when it runs.
Setting a particular parameter is as simple as typing VARIABLE=value
. This would set a parameter by the name VARIABLE with
the value that you provide.
To see a list of the environment variables that are already
set on your machine, type the following
$ env
This would produce a long list. Just go through the list before
reading the next part of the article. Linux by default sets
many environment variables for you. You can modify the values
of most of these variables. A few of the variables that are
set are
HOME=/home/david
would set the home directory to /home/david. This is perfect
in case your login name is david and you have been given a directory
named /home/david . In case you don't want this to be your home
directory but some other one you could indicate so by typing
the new directory name. The HOME directory is always the directory
that you are put in when you login.
There are many advantages of using the HOME variable. You can
always reach your home directory by only typing ' cd ' at the
prompt, irrespective of which directory you are presently within.
This would immediately transfer you to your HOME directory.
Besides in case you write scripts that have $HOME present in
them to refer to the current HOME directory, these scripts can
be used by other users as well since $HOME in their case would
refer to their home directories.
-
PATH=/usr:/bin/:usr/local/bin:.
This is a very important environment variable. This sets the
path that the shell would be looking at when it has to execute
any program. It would search in all the directories that are
present in the above line. Remember that entries are separated
by a ' : ' . You can add any number of directories to this list.
The above 3 directories entered is just an example.
Note : The last entry in the PATH command is a ' . '
(period). This is an important addition that you could make
in case it is not present on your system. The period indicates
the current directory in Linux. That means whenever you type
a command, Linux would search for that program in all the directories
that are in its PATH. Since there is a period in the PATH, Linux
would also look in the current directory for program by the
name (the directory from where you execute a command). Thus
whenever you execute a program which is present in the current
directory (maybe some scripts you have written on your own)
you don't have to type a ' ./programname ' . You can only type
' programname ' since the current directory is already in your
PATH.
Remember that the PATH variable is a very important variable.
In case you want to add some particular directory to your PATH
variable and in case you try typing the following
PATH =/newdirectory
This would replace the current PATH value with the new value
only. What you would want is to append the new directory to
the existing PATH value. For that to happen you should type
This would add the new directory to the existing PATH value. Always a $VARIABLE is substituted with the current value of the variable.
-
PS1=boss
PS1 is the shell prompt. It defines what you want your shell prompt to look like. By default it looks like a ' $ ' in bash shell. The above case would replace the default ' $ ' with a new 'boss' . Hence an ls command would look something like
boss> ls
All your commands would now be typed at a ' boss ' prompt instead of a ' $ ' prompt.
-
SHELL=/bin/bash
This tells where the program that represents your shell is to be found. In case you typed /bin/ksh in the above, then your bash shell would be replaced with the ksh shell (korn shell). So in case you are not happy with the bash shell, you could replace the bash with some other shell.
-
LOGNAME=david
The LOGNAME is automatically set for you as the same as your login name. This variable is used in case you want to use your own login name in any script. This is the simplest way of getting your login name from within a script. Thus in case you use $LOGNAME in any script the script would work for all users since the LOGNAME always holds the name of the current user.
A good use is in case you have been given a temporary directory to work with and to make temporary files then you would want to delete the files that you created. You could use a command with the $LOGNAME in it to locate files that were created by you and then you could pass the result of this command to a rm command. This would be a neat way to delete all the files at one go, rather than find them one at a time.
Note : Finding files based on a particular criteria and then passing those files to another program is explained in Article No. 21
-
There are more environment variables then the ones that are mentioned here. But most users would find the ones given here to be useful.
Important : To make the above changes permanent (that is it should work every time you login) make the changes to the .profile file that exists in your HOME directory. Simply type the required commands one line for each. And there you go. It will be available every time you login. You could check the variables using 'env' command.
20 Random Tutorials from the same category :
Multi-Threaded Programming With POSIX Threads
An abbreviated description of the Linux Boot up process
Moving around in the Linux file system
Manipulating files in Linux
Installing software from source in Linux
Linux's directory structure
Automatic file name completion
The powerful bash wildcards
Pipes - Get the most out of your shell
Unix And C/C++ Runtime Memory Management For Programmers
Compiling A Single-Source "C" Program
How to set Shell Environment Variables (bash shell)
Linux file permissions
Viewing and searching the man pages
What are the SUID, SGID and the Sticky Bits?
Change from text login to graphical login
Understanding file permissions and modifying them using chmod
Redirecting standard input and output
Redirection in Linux
Basic Graphics Programming With The Xlib Library













