系统管理指南:基本管理

Shell 环境

shell 可维护包含一组变量的环境,这些变量由 login 程序、系统初始化文件和用户初始化文件定义。另外,某些变量是在缺省情况下定义的。

Shell 可以有两种类型的变量:

在 C shell 中,使用小写名称和 set 命令来设置 shell 变量。使用大写名称和 setenv 命令来设置环境变量。如果设置 shell 变量,shell 会设置相应的环境变量。同样,如果设置环境变量,相应的 shell 变量也会更新。例如,如果使用一个新路径更新 path shell 变量,shell 也会用这个新路径更新 PATH 环境变量。

在 Bourne shellKorn shell 中,可以使用等于某个值的大写变量名称来设置 shell 变量和环境变量。同时也可使用 export 命令为后续要执行的任何命令激活这些变量。

对于所有的 shell,通常按变量的大写名称引用 shell 变量和环境变量。

在用户初始化文件中,可以通过更改预定义变量的值或指定其他变量来自定义用户的 shell 环境。下表显示如何在用户初始化文件中设置环境变量。

表 4–19 在用户初始化文件中设置环境变量

Shell 类型 

添加到用户初始化文件中的行 

C shell

setenv VARIABLE value

示例:

setenv MAIL /var/mail/ripley

Bourne shell 或 Korn shell  

VARIABLE=value; export VARIABLE

示例: 

MAIL=/var/mail/ripley;export MAIL

下表介绍了可能需要在用户初始化文件中自定义的环境变量和 shell 变量。有关不同 shell 所使用的变量的更多信息,请参见 sh(1)ksh(1)csh(1) 手册页。

表 4–20 Shell 变量和环境变量的说明

变量 

说明 

C shell 中的 CDPATHcdpath

设置由 cd 命令使用的变量。如果将 cd 命令的目标目录指定为相对路径名,cd 命令将首先在当前目录 (.) 中查找目标目录。如果没有找到目标目录,将继续搜索列在 CDPATH 变量中的路径名,直到找到目标目录并完成目录切换。如果没有找到目标目录,则当前的工作目录保持不变。例如,CDPATH 变量设置为 /home/jean/home/jean 下面有两个目录:binrje。如果当前的目录是 /home/jean/bin 目录,那么,当您键入 cd rje 时,即使您未指定全路径名,目录也将切换到 /home/jean/rje

history

为 C shell 设置历史记录。 

C shell 中的 HOMEhome

设置用户起始目录的路径。 

LANG

设置语言环境 (locale)。 

LOGNAME

定义当前登录用户的名称。登录程序会将 LOGNAME 的缺省值自动设置为在 passwd 文件中指定的用户名。您不应当重置此变量,而只应当引用此变量。

LPDEST

设置用户的缺省打印机。 

MAIL

设置用户邮箱的路径。 

MANPATH

设置可用手册页的分层结构。 

C shell 中的 PATHpath

按顺序指定多个目录,当用户键入命令时,shell 将在这些目录搜索要运行的程序。如果该目录不在搜索路径中,用户必须键入命令的完整路径名。  

在登录过程中,系统会自动定义缺省的 PATH,并将其设置为在 .profile(Bourne 或 Korn shell)或 .cshrc (C shell) 中指定的路径。

搜索路径的顺序至关重要。如果不同位置中存在相同的命令,将使用首先找到的具有该名称的命令。例如,假设在 Bourne shell 和 Korn shell 语法中将 PATH 定义为 PATH=/bin:/usr/bin:/usr/sbin:$HOME/bin/usr/bin/home/jean/bin 中均有名为 sample 的文件。如果用户键入 sample 命令而未指定其全路径名,则将使用在 /usr/bin 中找到的版本。

prompt

为 C shell 定义 shell 提示符。 

PS1

为 Bourne shell 或 Korn shell 定义 shell 提示符。 

C shell 中的 SHELLshell

设置由 makevi 和其他工具使用的缺省 shell。

TERMINFO

指定存储备用 terminfo 数据库的目录。可使用 /etc/profile/etc/.login 文件中的 TERMINFO 变量。有关更多信息,请参见 terminfo(4) 手册页。

如果设置了 TERMINFO 环境变量,系统将首先检查由用户定义的 TERMINFO 路径。如果系统在用户定义的 TERMINFO 目录中找不到终端的定义,它将在缺省目录 (/usr/share/lib/terminfo) 中搜索终端的定义。如果系统在这两个位置均未找到终端的定义,则将终端标识为“哑终端”。

C shell 中的 TERM 或 term

定义终端。此变量应当在 /etc/profile/etc/.login 文件中重置。当用户调用编辑器时,系统将查找在该环境变量中定义的同名文件。系统将搜索 TERMINFO 所引用的目录以确定终端的特征。

TZ

设置时区。例如,时区可用于在 ls -l 命令中显示日期。如果没有在用户的环境中设置 TZ,将使用系统设置。否则,将使用格林威治标准时间。