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 中文計劃