歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix教程 >> 揭開UNIX高手的那些重大秘密

揭開UNIX高手的那些重大秘密

日期:2017/2/27 17:37:17   编辑:Unix教程

Pixel, Byte, and Comma的軟件開發者Martin Streicher 在本文中為我們揭示了UNIX高手的秘密。Martin Streicher 是一位 Ruby on Rails 的自由開發人員和 Linux Magazine 的前任主編。Martin 畢業於 Purdue University 並獲得計算機科學學位,從 1986 年起他一直從事 UNIX 類系統的編程工作。他喜歡收集藝術品和玩具。

保存環境變量

大多數 UNIX 用戶在 .bashrc(針對 Bash shell)和 .zshrc(針對 Z shell)等 shell 啟動文件中塞滿大量用戶設置,以便一次又一次地重建鐘愛的 shell 環境。啟動文件能夠創建別名、設置 shell 選項、創建函數、以及設置環境變量。關鍵的環境變量包括 HOME(指向您的主目錄)、PATH(列舉從中搜索應用程序的目錄)和 MANPATH(列舉從中搜索手冊頁的目錄)。要查看您的 shell 中設置了哪些環境變量,鍵入 printenv 命令。查閱 shell 手冊頁,獲取可用環境變量的完整列表。

與 shell 一樣,可以通過環境變量定制其他許多 UNIX 應用程序。例如,Java 子系統要求定義 JAVA_HOME 來指向 Java 運行時的根。同樣,Amazon Web Services (AWS) 實用程序套件強制使用 AWS_CREDENTIAL_FILE 來指向一個包含有效私匙憑證的文件。單獨的應用程序也提供環境變量,關鍵是如何發現這些變量。幸運的是,這種工作不需要非法入侵;相反,只需查詢手邊的實用工具手冊頁,查找標題為 “Environment Variables” 的章節即可。

例如,分頁實用程序 less 定義了幾個有用的環境變量:

◆環境變量 LESS 存儲一些命令行選項,以在您每次調用該分頁程序時減少鍵入量。例如,如果您需要閱讀大量日志文件,可將以下語句添加到一個 shell 啟動文件中:

export LESS='--RAW-CONTROL-CHARACTERS --squeeze-lines --ignore-case'

上述選項將分別解譯控制字符(通常是語法著色),將多個空行壓縮為一行,並忽略字符串匹配中的大小寫。如果您使用代碼,可嘗試以下選項:

export LESS='--LINE-NUMBERS --quit-if-one-screen --quit-on-intr'

◆名為 LESSKEY 的環境設置指向一個密匙綁定文件。可以使用密匙綁定來定制 less 的行為,比如,匹配另一個頁面或編輯器的行為。

◆與 shell 一樣,less 能保留多個調用之間的歷史。設置 LESSHISTFILE 和 LESSHISTSIZE 分別指向一個持久命令文件和設置要記錄的命令的最大條數。

GNU Compiler Collection (GCC) 是另一個典型的環境變量應用示例。GCC 定義各種環境變量來定制其操作。LIBRARY_PATH,顧名思義,是一個目錄列表,用於搜索要鏈接到的庫;COMPILER_PATH 的工作方式與 shell 的 PATH 非常相似,但是由 GCC 在內部使用,用於查找編譯過程中使用的子程序。

如果您針對單個平台寫代碼並構建二進制文件,您可能永遠也不會用到這些環境變量,但是,如果您跨平台交叉編譯相同的代碼,那麼這些變量對於訪問每個平台的不同的頭部和庫至關重要。您可以將這些變量設置為不同的值集合,一個集合針對一種機器,而另一個集合針對另一種風格的系統。

事實上,您可以從 GCC 獲得一個暗示:可以為每個應用程序維護多個環境變量集合,根據手邊的工作從一個集合切換到另一個集合。一種方法是在每個項目目錄中保存一個環境初始化文件並根據需要 source 它。例如,許多 Ruby 開發人員使用這種方法來在不同的 Ruby 版本間切換,根據需要更改環境變量 PATH、GEM_HOME 和 GEM_PATH,從一個版本跳到另一個版本。

“點綴” 環境

與環境變量非常相似的是,許多 Linux和 UNIX 應用程序都提供一個 文件 — 文件名以圓點開始的小文件 — 來進行定制。與環境變量不同的是:環境變量采集少量標記和相對較少的信息量,而點文件可能更廣泛、更復雜,擁有自己獨特的語法規則、甚至自己的編程語言。點文件是保存選項和設置的理想位置,因為(根據 UNIX 傳統)以一個圓點開始的文件名不會出現在標准的目錄清單中。(使用 ls -a 來查看這些所謂的隱藏文件。)點文件是純文本文件,只是文件名比較特別而已。

點文件通常位於您的主目錄內,但有些實用程序也在當前工作目錄中查找點文件。如果一個應用程序支持多個點文件,則該程序通常應用於優先規則,來表明一個文件比另一個文件優先。通常,“本地” 點文件 — 位於當前工作目錄 — 優先級最高,然後是主目錄中的點文件,最後是一個系統范圍配置文件。這些文件可以全部存在,也可以存在一個,或者都不存在,這取決於應用程序將這些文件視為互斥的還是遞增的。在第一種情況下,優先鏈中第一個點文件的優先權是不容置疑的。在後一種情況下,配置可以級聯或融解到最終結果中。

less 的密匙綁定文件是一個簡單點文件示例,位於 $HOME/.lesskey 中。文件中的每一行都是一對(一個按鍵和一條命令),如下所示:

\r        forw-line
\n        forw-line
e         forw-line
j         forw-line
^E        forw-line
^N        forw-line
k         back-line
y         back-line
^Y        back-line

fetchmail 是比較復雜的點文件示例。這個實用程序在本地從多個遠程源提取電子郵件並傳送消息。這個實用程序的操作只通過 $HOME/.fetchmailrc 控制。(參見手冊頁了解它的眾多選項。)crongitvi,以及其他許多命令都能識別點文件。同樣,請閱讀這個應用程序的手冊頁,了解可以在點文件中配置的內容。有些點文件內容豐富,足以占用一個單獨的手冊頁,比如 crontab

Copyright © Linux教程網 All Rights Reserved