1 环境变量

每个进程都有一个相关的环境。一个环境就是一个环境变量的集合。一个变量是一个有着固定名字的可改变的值。举个例子,名字 EMAIL 可以指 joe@nowhere.com 这个值。这个值可以变化; EMAIL 也可以指 jane@somewhere.com

由于您的 shell 是一个类似于其他进程的进程,它有一个环境。您可以打入 printenv 命令来看一下您的 shell 环境。

图 6.1: printenv 输出的一个例子
\begin{figure}\par\par\begin{list}{}{\setlength{\rightmargin}{\leftmargin}\ragge...
...hells!environments}
\par\_=/usr/bin/printenv\end{ttfamily}\end{list}\end{figure}

[*] 页上的图 6.1 有一些 printenv 输出的例子。在您的系统上,这些输出会有所不同,但总是类似的。

环境变量是配置系统的一种方法。举个例子,EDITOR 环境变量可让您选择喜爱的编辑器来贴文章到新闻组、写 e-mail 等。

设置环境变量很简单。作为练习,试一下修改环境变量来定制您的 shell 提示符和文本文件查看器。首先,让咱们学习一点背景知识。

man less

这个命令使您能查看 less 的在线手册。为了能一页页地显示给您看,man 激活一个 pager,从而使您能每按一次空格键就看到新的一页。缺省情况下,使用的 pager 是 more

咱们再来浏览一下 less 的帮助页,less 是一个性能加强的 pager:可以按空格键翻到新的一页;按 q 键退出。而 more 在您到达 man 帮助页的末端时会自动退出。

export PAGER=less

如果您阅读后知道了 less 的优点,您也许想使用它来读帮助页。为了做到这一点,您要设置 PAGER 环境变量。

bash 下设置环境变量的命令一般总是以下格式:

export NAME=value

export 的意思是把变量从 shell 加到环境中。这意味着除了 shell,别的程序(例如,文件浏览器)都能访问它。

echo $PAGER

这是显示一个变量的值最方便的方法。$PAGER 告诉 shell 在调用这个命令之前,插入 PAGER 变量的值。echo 回显它的参数:这一次它显示出当前的 PAGER 变量的值,less

man more

再来显示 more 这个命令的帮助手册页。这次 man 将调用 less 这个 pager。

less 具有许多 more 缺乏的特性。比如您可用 b 键回滚。您也可以用光标键向上和向下移动。当到达帮助页的未尾时,less 不会退出;它将等您按下 q 键。

您可以试一些 less 特有的命令,比如 b,而在您使用 more 时,它们将不起作用。

unset PAGER

If you don't want to specify a pager anymore, you can unset the variable. man will then use more by default, just as it did before you set the variable.

如果您不想定制 pager,您可以(设回)unset 这个变量。在 unset 之后,man 在缺省情况下就会使用 more,就如在您设置此变量前一样。

echo $PAGER

因为 PAGER 已经被 unset,echo 将不显示任何东西。

PS1=hello:

图 6.2: 改变提示符
\begin{figure}\par\par\begin{list}{}{\setlength{\rightmargin}{\leftmargin}\ragge...
...~\$PS1}
\par My~prompt~is~hello:
\par hello:\end{ttfamily}\end{list}\end{figure}

只是为了有趣,改变一下您的 shell 提示符。之后 $ 将会改变;请看图 6.2 的详细情况。

export 不是必需的,因为您会改变 shell 原始的行为。不存在把这个变量 export 到环境给其它程序利用的理由。从技术上讲,与其说 PS1 是一个环境变量,还不如说是一个 shell 变量。

如果您愿意,您也可以 export 这个 shell 变量,把它转变成一个环境变量。如果您这样做了,您从 shell 上运行的程序就可以感知到它。

John Goerzen / Ossama Othman / Debian 中文计划