Shell Environment
A shell maintains an environment
that includes a set of variables defined by the login program,
the system initialization file, and the user initialization files. In addition,
some variables are defined by default.
A shell can have two types of variables:
-
Environment variables – Variables
that are exported to all processes spawned by the shell. Their settings can
be seen with the env command. A subset of environment variables,
such as PATH, affects the behavior of the shell itself.
-
Shell (local) variables – Variables that affect
only the current shell. In the C shell, a set of these shell variables have
a special relationship to a corresponding set of environment variables. These
shell variables are user, term, home, and path. The value of the environment variable
counterpart is initially used to set the shell variable.
In the C shell, you use the lowercase
names with the set command to set shell variables. You
use uppercase names with the setenv command to set environment
variables. If you set a shell variable, the shell sets the corresponding environment
variable. Likewise, if you set an environment variable, the corresponding
shell variable is also updated. For example, if you update the path shell
variable with a new path, the shell also updates the PATH environment
variable with the new path.
In the Bourne and Korn shells, you can use the uppercase variable name
equal to some value to set both shell and environment variables. You also
have to use the export command to activate the variables
for any subsequently executed commands.
For all shells, you generally refer to shell and environment variables
by their uppercase names.
In a user initialization
file, you can customize a user's shell environment by changing the values
of the predefined variables or by specifying additional variables. The following
table shows how to set environment variables in a user initialization file.
Table 4–18 Setting Environment Variables
in a User Initialization File
Shell Type
|
Line to Add to the User Initialization File
|
C shell
|
setenv VARIABLE value
Example:
setenv MAIL /var/mail/ripley
|
Bourne or Korn shell
|
VARIABLE=value; export VARIABLE
Example:
MAIL=/var/mail/ripley;export MAIL
|
The following
table describes environment variables and shell variables that you might want
to customize in a user initialization file. For more information about variables
that are used by the different shells, see the sh(1), ksh(1),
or csh(1) man pages.
Table 4–19 Shell and Environment
Variable Descriptions
Variable
|
Description
|
CDPATH, or cdpath in
the C shell
|
Sets a variable used by the cd command. If the target
directory of the cd command is specified as a relative
path name, the cd command first looks for the target directory
in the current directory (“.”). If the target is not found, the
path names listed in the CDPATH variable are searched consecutively
until the target directory is found and the directory change is completed.
If the target directory is not found, the current working directory is left
unmodified. For example, the CDPATH variable is set to /home/jean, and two directories exist under /home/jean, bin, and rje. If you are in the /home/jean/bin directory and type cd rje, you change directories
to /home/jean/rje, even though you do not specify a full
path.
|
history
|
Sets the history for the C shell.
|
HOME, or home in
the C shell
|
Sets the path to the user's home directory.
|
LANG
|
Sets the locale.
|
LOGNAME
|
Defines the
name of the user currently logged in. The default value of LOGNAME is
set automatically by the login program to the user name specified in the passwd file. You should only need to refer to, not reset, this
variable.
|
LPDEST
|
Sets the user's default printer.
|
MAIL
|
Sets the path to the user's mailbox.
|
MANPATH
|
Sets the hierarchies of man pages that are available.
|
PATH, or path in
the C shell
|
Specifies, in order, the directories that the shell searches to find
the program to run when the user types a command. If the directory is not
in the search path, users must type the complete path name of a command.
As part of the login
process, the default PATH is automatically defined and
set as specified in .profile (Bourne or Korn shell) or .cshrc (C shell).
The order of the search path is important. When identical commands exist
in different locations, the first command found with that name is used. For
example, suppose that PATH is defined in Bourne and Korn
shell syntax as PATH=/bin:/usr/bin:/usr/sbin:$HOME/bin and
a file named sample resides in both /usr/bin and /home/jean/bin. If the user types the command sample without
specifying its full path name, the version found in /usr/bin is
used.
|
prompt
|
Defines the shell prompt for the C shell.
|
PS1
|
Defines the shell prompt for the Bourne or Korn shell.
|
SHELL, or shell in the C
shell
|
Sets the default shell used by make, vi,
and other tools.
|
TERMINFO
|
Specifies the path name for an unsupported terminal that has been added
to the terminfo file. Use the TERMINFO variable
in either the /etc/profile or /etc/.login file.
When the TERMINFO environment variable is set, the
system first checks the TERMINFO path defined by the user.
If the system does not find a definition for a terminal in the TERMINFO directory
defined by the user, it searches the default directory, /usr/share/lib/terminfo, for a definition. If the system does not find a definition in
either location, the terminal is identified as “dumb.”
|
TERM, or term in the C shell
|
Defines the terminal. This variable should be reset in either the /etc/profile or /etc/.login file. When the
user invokes an editor, the system looks for a file with the same name that
is defined in this environment variable. The system searches the directory
referenced by TERMINFO to determine the terminal characteristics.
|
TZ
|
Sets the time
zone. The time zone is used to display dates, for example, in the ls
-l command. If TZ is not set in the user's environment,
the system setting is used. Otherwise, Greenwich Mean Time is used.
|