揭開UNIX高手的那些重大秘密
Pixel, Byte, and Comma的軟件開發(fā)者M(jìn)artin Streicher 在本文中為我們揭示了UNIX高手的秘密。Martin Streicher 是一位 Ruby on Rails 的自由開發(fā)人員和 Linux Magazine 的前任主編。Martin 畢業(yè)于 Purdue University 并獲得計(jì)算機(jī)科學(xué)學(xué)位,從 1986 年起他一直從事 UNIX 類系統(tǒng)的編程工作。他喜歡收集藝術(shù)品和玩具。
保存環(huán)境變量
大多數(shù) UNIX 用戶在 .bashrc(針對(duì) Bash shell)和 .zshrc(針對(duì) Z shell)等 shell 啟動(dòng)文件中塞滿大量用戶設(shè)置,以便一次又一次地重建鐘愛的 shell 環(huán)境。啟動(dòng)文件能夠創(chuàng)建別名、設(shè)置 shell 選項(xiàng)、創(chuàng)建函數(shù)、以及設(shè)置環(huán)境變量。關(guān)鍵的環(huán)境變量包括 HOME(指向您的主目錄)、PATH(列舉從中搜索應(yīng)用程序的目錄)和 MANPATH(列舉從中搜索手冊(cè)頁的目錄)。要查看您的 shell 中設(shè)置了哪些環(huán)境變量,鍵入 printenv
命令。查閱 shell 手冊(cè)頁,獲取可用環(huán)境變量的完整列表。
與 shell 一樣,可以通過環(huán)境變量定制其他許多 UNIX 應(yīng)用程序。例如,Java 子系統(tǒng)要求定義 JAVA_HOME 來指向 Java 運(yùn)行時(shí)的根。同樣,Amazon Web Services (AWS) 實(shí)用程序套件強(qiáng)制使用 AWS_CREDENTIAL_FILE 來指向一個(gè)包含有效私匙憑證的文件。單獨(dú)的應(yīng)用程序也提供環(huán)境變量,關(guān)鍵是如何發(fā)現(xiàn)這些變量。幸運(yùn)的是,這種工作不需要非法入侵;相反,只需查詢手邊的實(shí)用工具手冊(cè)頁,查找標(biāo)題為 “Environment Variables” 的章節(jié)即可。
例如,分頁實(shí)用程序 less
定義了幾個(gè)有用的環(huán)境變量:
◆環(huán)境變量 LESS 存儲(chǔ)一些命令行選項(xiàng),以在您每次調(diào)用該分頁程序時(shí)減少鍵入量。例如,如果您需要閱讀大量日志文件,可將以下語句添加到一個(gè) shell 啟動(dòng)文件中:
export LESS='--RAW-CONTROL-CHARACTERS --squeeze-lines --ignore-case' |
上述選項(xiàng)將分別解譯控制字符(通常是語法著色),將多個(gè)空行壓縮為一行,并忽略字符串匹配中的大小寫。如果您使用代碼,可嘗試以下選項(xiàng):
export LESS='--LINE-NUMBERS --quit-if-one-screen --quit-on-intr' |
◆名為 LESSKEY 的環(huán)境設(shè)置指向一個(gè)密匙綁定文件。可以使用密匙綁定來定制 less
的行為,比如,匹配另一個(gè)頁面或編輯器的行為。
◆與 shell 一樣,less
能保留多個(gè)調(diào)用之間的歷史。設(shè)置 LESSHISTFILE 和 LESSHISTSIZE 分別指向一個(gè)持久命令文件和設(shè)置要記錄的命令的最大條數(shù)。
GNU Compiler Collection (GCC) 是另一個(gè)典型的環(huán)境變量應(yīng)用示例。GCC 定義各種環(huán)境變量來定制其操作。LIBRARY_PATH,顧名思義,是一個(gè)目錄列表,用于搜索要鏈接到的庫;COMPILER_PATH 的工作方式與 shell 的 PATH 非常相似,但是由 GCC 在內(nèi)部使用,用于查找編譯過程中使用的子程序。
如果您針對(duì)單個(gè)平臺(tái)寫代碼并構(gòu)建二進(jìn)制文件,您可能永遠(yuǎn)也不會(huì)用到這些環(huán)境變量,但是,如果您跨平臺(tái)交叉編譯相同的代碼,那么這些變量對(duì)于訪問每個(gè)平臺(tái)的不同的頭部和庫至關(guān)重要。您可以將這些變量設(shè)置為不同的值集合,一個(gè)集合針對(duì)一種機(jī)器,而另一個(gè)集合針對(duì)另一種風(fēng)格的系統(tǒng)。
事實(shí)上,您可以從 GCC 獲得一個(gè)暗示:可以為每個(gè)應(yīng)用程序維護(hù)多個(gè)環(huán)境變量集合,根據(jù)手邊的工作從一個(gè)集合切換到另一個(gè)集合。一種方法是在每個(gè)項(xiàng)目目錄中保存一個(gè)環(huán)境初始化文件并根據(jù)需要 source
它。例如,許多 Ruby 開發(fā)人員使用這種方法來在不同的 Ruby 版本間切換,根據(jù)需要更改環(huán)境變量 PATH、GEM_HOME 和 GEM_PATH,從一個(gè)版本跳到另一個(gè)版本。
“點(diǎn)綴” 環(huán)境
與環(huán)境變量非常相似的是,許多 Linux和 UNIX 應(yīng)用程序都提供一個(gè)點(diǎn) 文件 — 文件名以圓點(diǎn)開始的小文件 — 來進(jìn)行定制。與環(huán)境變量不同的是:環(huán)境變量采集少量標(biāo)記和相對(duì)較少的信息量,而點(diǎn)文件可能更廣泛、更復(fù)雜,擁有自己獨(dú)特的語法規(guī)則、甚至自己的編程語言。點(diǎn)文件是保存選項(xiàng)和設(shè)置的理想位置,因?yàn)椋ǜ鶕?jù) UNIX 傳統(tǒng))以一個(gè)圓點(diǎn)開始的文件名不會(huì)出現(xiàn)在標(biāo)準(zhǔn)的目錄清單中。(使用 ls -a
來查看這些所謂的隱藏文件。)點(diǎn)文件是純文本文件,只是文件名比較特別而已。
點(diǎn)文件通常位于您的主目錄內(nèi),但有些實(shí)<
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解