Setting Environment Variables

There are two styles of shells on most UNIX (and Linux) systems:

Those derived from the original bourne shell (sh) which include bash, ksh etc.
and those derived from the C shell which include csh, tsch, etc. The difficulty
for many beginners is that these two families of shells support different syntax
for setting variables in the environment along with different control flow
commands.
You can find which shell you are using by typing:

echo $SHELL at the prompt

Under sh or bash, you set an environment variable as
follows:

PATH= $PATH:$HOME/bin
export PATH

The first line sets the PATH environment variable. These two commands can be
combined into a single line as follows:

PATH= $PATH:$HOME/bin; export PATH

The semicolon allows multiple commands to be issued on the same command line.
Normally, this command would be placed in the .profile file located in
your home directory. The .profile file is read when the sh, bash,
or ksh shell starts. It acts as an initialization file where you can set
all kinds of environment variables, change behaviors of the shells, etc. The bash
shell will also read a .bshrc resource file in your home directory if it
exists. This .bshrc file is for commands that only the bash shell
understands. A similar .bash_profile file can also be used for bash-only
startup commands. If these files don’t exist in your home directory, then the
system uses some system-wide files in the /etc/profile. If you set these
environment variables for bash in the .profile file, then they will be inherited
by any shells that you start (spawn) from this shell including c shells. The
set“, “env” or “printenv
command will display all of your current environment variables. You may need to
pipe this command through less or more(e.g env | less) to see all
of the variables

Assuming that the did not find mpif90 when you type it at the command
prompt,

[ccs@agt-login ccs]$ mpif90
bash: mpif90: command not found

You can verify the existence of the command, by executing whereis mpif90
or locate mpif90 at the command prompt,

[ccs@agt-login ccs]$ whereis mpif90
mpif90: /opt/mpich-1.2.4/bin/mpif90

Once you find the path for mpif90 you can add it to the PATH
environment variable so that the shell automatically finds the command when
you type it next time at the shell. This can be done by either creating .profile
or .bshrc or modifying the PATH variable in the already
existing .bash_profile file

Append /opt/mpich-1.2.4/bin to the end of the PATH
environment variable.

PATH=$PATH:$HOME/bin:/opt/mpich-1.2.4/bin
export PATH

Now we switch to the C shell side of things. The syntax to set an enviroment
variables in the csh (and tcsh) is different.

setenv PATH $PATH:$HOME/bin

The “setenv” command will display the environment variables.
These commands could be placed in a .cshrc file in your home directory
that is read whenever a c shell starts. The .login file is read after the
.cshrc file when this is a login script.

Assuming that the did not find mpif90 when you type it at
the command prompt,

[ccs@agt-login ccs]$ mpif90
bash: mpif90: command not found

You can verify the existence of the command, by executing whereis mpif90
or locate mpif90 at the command prompt,

[ccs@agt-login ccs]$ whereis mpif90
mpif90: /opt/mpich-1.2.4/bin/mpif90

Once you find the path for mpif90 you can add it to the PATH
environment variable so that the shell automatically finds the command when
you type it next time at the shell. This can be done by modifying the PATH variable
in the .cshrc file. (You need to create if .cshrc file doesnt
exist)

Append /opt/mpich-1.2.4/bin to the end of the PATH environment
variable.

setenv PATH $PATH:$HOME/bin:/opt/mpich-1.2.4/bin

Leave a Reply