跳到內容

Unix/環境變數指南

來自 Wikibooks,開放世界中的開放書籍

環境變數通常是在啟動 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,這是許多系統傳送郵件的地方。

MAILCHECK

[編輯 | 編輯原始碼]
這是一個 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

參考資料

[編輯 | 編輯原始碼]
華夏公益教科書