Unix/环境变量指南
环境变量通常是在启动 Shell 时继承或声明的设置。您可以使用 Shell 设置变量;语法各不相同,但 Bourne Shell 使用
$ VARNAME="new value" $ export VARNAME or $ export VARNAME="new value"
从该 Shell 启动的每个程序都将 VARNAME 设置为 新值。环境变量的名称区分大小写;按照惯例,它们使用大写字母。
Shell 变量类似于环境变量,不同之处在于它不会导出到从该 Shell 启动的新程序。(您可以导出它,但通常您只需编写一个 Shell 初始化脚本,以便在每个 Shell 中设置它。)
当您告诉 sudoedit、vipw 和其他此类程序编辑文件时,它们调用的编辑器程序。
示例
EDITOR=vi
EDITOR=emacs
另请参见 VISUAL。
用户的 home 目录。大多数程序使用此 Shell 变量来查找您的 home,因此您可以设置此变量来覆盖/etc/passwd中 home 目录的设置。这样,您可以启动将点文件或其他文件放在与您通常的 home 目录不同的目录中的程序。
在大多数 Shell 中,~指的是您的 home 目录。在 C Shell 和一些较新的 Bourne Shell 版本中,~tux始终指的是/etc/passwd中指定的 tux 用户的 home 目录,而~(后面没有用户名)始终指的是 HOME 的值,即使它与您在/etc/passwd.
用户名。这是一个让用户轻松获取自己用户名的方法。但是,程序不能信任此变量,因为它可以设置为任意值。
LOGNAME 和 USER 都应该设置为用户名。
示例
LOGNAME=tux
LOGNAME=sudhir
传入本地电子邮件的位置。当 mail 或其他本地电子邮件阅读器继承此环境变量时,它会使用此变量来查找收件箱。
一些用户在他们的本地 Unix 机器上没有电子邮件,而是使用 Internet 访问他们的邮件服务器,在这种情况下,MAIL 环境变量无关紧要。
许多用户没有设置 MAIL,在这种情况下,电子邮件阅读器会使用默认设置。对于用户“tux”,默认值为/var/mail/tux,这是许多系统发送邮件的地方。
- 这是一个 Shell 变量,通常不会作为环境变量导出。
“bash” 检查和提醒您有新的本地电子邮件的频率。
man(1) 命令用来搜索手册页面的路径。MANPATH 环境变量的格式与 PATH 环境变量一样,使用“:”分隔符。
当您告诉 man 和其他此类程序查看文件时,它们调用的分页器。
示例
PAGER=less
PAGER=more
一个用空格或冒号分隔的目录列表,当运行没有绝对路径的命令时,Shell 会在这些目录中搜索可执行文件。例如,ls 没有绝对路径,但 /bin/ls 有)。
一些系统使用系统 Shell 初始化文件设置 PATH,例如/etc/profile用于 Bourne Shell。一些系统在登录过程中之前设置 PATH,例如在/etc/login.conf用于 OpenBSD 系统。例如,一个 Linux 机器可以在登录时设置 PATH,然后添加/usr/X11R6/bin到路径中,使用/etc/profile,然后添加/home/ambler/bin到路径中,使用~/.bash_profile.
系统引导脚本也会设置 PATH。在一些 Linux 机器上,设置路径的第一个命令似乎在 /etc/rc.d/rc.sysinit 中,它是 init 进程 (inittab) 调用的 Shell 脚本之一。
示例
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/puffy/bin
如果设置了此 PATH,并且您输入 Shell 命令
$ uname -r
,则 Shell 会搜索“uname”可执行程序。它首先在 /bin 中搜索,然后是 /sbin,然后是 /usr/bin。如果 /bin/uname 是一个可执行文件(它应该是这样的),那么 Shell 停止搜索并运行它。如果 /home/puffy/bin/uname 也是可执行文件,它不会运行,因为搜索从未到达该目录。
在大多数情况下,您只会在将 PATH Shell 变量导出到 PATH 环境变量之前追加到它。要从搜索路径中删除目录,您必须将整个 PATH 变量重新分配给一个新的、更短的字符串,这通常需要大量的输入或一些剪切和粘贴操作。
- 这是一个 Shell 变量,通常不会作为环境变量导出。
bash 和公共领域的 ksh Shell 使用它作为提示字符串。
可以放在提示字符串中的内容包括\h(主机名),\u(用户名),\w(工作目录的绝对路径名),\W(工作目录的名称,不带路径),\d(日期),\t(时间)。
在一些 Red Hat 机器上,主提示字符串在/etc/bashrc文件中设置。提示也设置在/etc/profile中,但 bashrc 中的设置似乎优先。一个~/.bashrc文件运行 /etc/bashrc,它会设置提示。因为每个“bash”实例都会运行~/.bashrc,提示也会出现在从显示管理器(如“xdm”)启动的 X 会话中。
在一些 Slackware 机器上,命令行提示设置在 /etc/profile 中。xterm 和 rxvt 提示不同。提示不会为 X 会话设置,但如果您写了一个~/.bashrc来执行此操作。提示是 Shell 变量,从 Shell 初始化脚本设置。它们不是由 X 资源(如/usr/X11R6/lib/X11/app-defaults/XTerm.
- Mark G. Sobell 编著,Addison-Wesley 出版(1998 年)的《Linux 实用指南》在第 331 页对提示符字符串有更多说明。
- 这是一个主 Shell 变量,通常不会导出为环境变量。
bash 和公有领域 ksh Shell 使用它作为辅助提示符字符串。
用户默认 Shell 的名称,例如 /bin/sh、/bin/bash 或 /bin/tcsh。另请参见 解释/Shell 选择。
此变量的设置和用途应与 LOGNAME 相同。
此变量用于指定“视觉” - 屏幕方向 - 编辑器。通常,您希望将其设置为与 EDITOR 变量相同的值。最初,EDITOR 会设置为 ed(一个基于行的编辑器),而 VISUAL 会设置为 vi(一个基于屏幕的编辑器)。如今,您不太可能将电传打字机用作您的终端,因此无需为两者选择不同的编辑器。尽管如此,设置两者仍然很有用:许多程序,包括 less 和 crontab,将调用 VISUAL 来编辑文件,如果 VISUAL 未设置,则会回退到 EDITOR - 但其他程序会直接调用 EDITOR。
示例
VISUAL=mg
VISUAL=vi
另请参见 EDITOR。
- Unix environ(5) 手册页 在 man.cat-v.org
- environ(7) 手册页 - FreeBSD、NetBSD、OpenBSD
- 8. 环境变量,开放组基础规范第 7 版,pubs.opengroup.org
- SSC (2000) "Bash 参考卡" pdf,预定义变量部分,digilife.be
- Sobell, Mark G. (1998), *Linux 实用指南*。Addison-Wesley
- W:环境变量