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, like 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 and use uppercase names with the setenv command to set environment variables. If you set a shell
variable, the shell sets the corresponding environment variable and vice versa.
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–19 Setting Environment Variables in a User Initialization File
Set a User's Environment Variables
for The 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 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 sh(1), ksh(1), or csh(1).
Table 4–20 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 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 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.
The default PATH is automatically
defined and set as specified in .profile (Bourne or Korn
shell) or .cshrc (C shell) as part of the login process.
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 /etc/profile or /etc/.login.
When the TERMINFO environment
variable is set, the system first checks the TERMINFO path
defined by the user. If it 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 /etc/profile or /etc/.login. When the user
invokes an editor, the system looks for a file with the same name as the definition
of this environment variable. The system searches the directory referenced
by TERMINFO to determine the terminal characteristics.
|
TZ
|
Sets the time zone, which 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.
|