在 Oracle® Solaris 11.2 中管理用户帐户和用户环境

退出打印视图

更新时间: 2014 年 9 月
 
 

Bash 和 Korn Shell 环境变量

bash shell 和 ksh93 shell 存储 shell 识别为环境变量的特殊变量信息。对于 bash shell,要查看当前环境变量的完整列表,请使用 declare 命令:

$ declare
BASH=/usr/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINEND=()
BASH_SOuRCE=()
BASH_VERSINFO=([0]=''3'' [1]=''2'' [2]=''25'' [3]=''1''
[4]=''release'' [5]''
.
.
.

对于 ksh93 shell,请使用 set 命令,此命令与 bash shell 的 declare 命令等效。

$ set
  COLUMNS=80
  ENV='$HOME/.kshrc'
  FCEDIT=/bin/ed
  HISTCMD=3
  HZ=''
  IFS=$' \t\n'
  KSH_VERSION=.sh.version
  LANG=C
  LINENO=1
  .
  .
  .

要为任一 shell 输出环境变量,请使用 echoprintf 命令。例如:

$ echo $SHELL
/usr/bin/bash
$ printf "$PATH\n"
/usr/bin:/usr/sbin

注 -  环境变量在会话之间不会持续。要设置持久性环境变量值,请在 .bashrc 文件中设置值。

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

环境变量

指定导出到由 shell 产生的所有进程的变量。export 命令用于导出变量。例如:

export VARIABLE=value

可以使用 env 命令显示这些设置。环境变量的子集(如 PATH)影响 shell 本身的行为。

Shell(本地)变量

指定仅影响当前 shell 的变量。

在用户初始化文件中,您可以通过更改预定义变量的值或指定其他变量来定制用户的 shell 环境。

下表提供了有关 Oracle Solaris 发行版中可用的 shell 和环境变量的更多详细信息。

表 1-10  shell 变量和环境变量的说明
变量
说明
CDPATH
设置由 cd 命令使用的变量。如果将 cd 命令的目标目录指定为相对路径名,cd 命令将首先在当前目录 (.) 中搜索目标目录。如果没有找到目标目录,将继续搜索列在 CDPATH 变量中的路径名,直到找到目标目录并完成目录切换。如果没有找到目标目录,则当前的工作目录保持不变。例如,假设 CDPATH 变量设置为 /home/jean/home/jean 下面有两个目录:bindoc。如果当前的目录是 /home/jean/bin 目录,那么,当您键入 cd doc 时,即使您未指定全路径名,目录也将切换到 /home/jean/doc
HOME
设置用户起始目录的路径。
LANG
设置语言环境。
LOGNAME
定义当前登录用户的名称。登录程序会将 LOGNAME 的缺省值自动设置为在 passwd 文件中指定的用户名。您不应当重置此变量,而只应当引用此变量。
MAIL
设置用户邮箱的路径。
MANPATH
设置可用手册页的分层结构。

注 -  从 Oracle Solaris 11 开始,不再需要 MANPATH 环境变量。man 命令根据 PATH 环境变量设置来确定合适的 MANPATH

PATH
按顺序指定多个目录,当用户键入命令时,shell 将在这些目录搜索要运行的程序。如果该目录不在搜索路径中,用户必须键入命令的完整路径名。
在登录过程中,系统会自动定义缺省的 PATH,并将其设置为 .profile 中指定的路径。
搜索路径的顺序至关重要。如果不同位置中存在相同的命令,将使用首先找到的具有该名称的命令。例如,假设以 shell 语法将 PATH 定义为 PATH=/usr/bin:/usr/sbin:$HOME/bin,且 /usr/bin/home/jean/bin 中均有名为 sample 的文件。如果用户键入 sample 命令而未指定其全路径名,则将使用在 /usr/bin 中找到的版本。
PS1
为 bash shell 或 ksh93 shell 定义 shell 提示符。
SHELL
设置由 makevi 和其他工具使用的缺省 shell。
TERMINFO
指定存储备用 terminfo 数据库的目录。可使用 /etc/profile/etc/.login 文件中的 TERMINFO 变量。有关更多信息,请参见 terminfo(4) 手册页。
如果设置了 TERMINFO 环境变量,系统将首先检查由用户定义的 TERMINFO 路径。如果系统在用户定义的 TERMINFO 目录中找不到终端的定义,它将在缺省目录 (/usr/share/lib/terminfo) 中搜索终端的定义。如果系统在这两个位置均未找到终端的定义,则将终端标识为“哑终端”。
TERM
定义终端。此变量应当在 /etc/profile/etc/.login 文件中重置。当用户调用编辑器时,系统将查找在该环境变量中定义的同名文件。系统将搜索 TERMINFO 所引用的目录以确定终端的特征。
TZ
设置时区。例如,时区可用于在 ls -l 命令中显示日期。如果没有在用户的环境中设置 TZ,将使用系统设置。否则,将使用格林威治标准时间。