ZT - 對話 UNIX: UNIX 高手的重大秘密(1)
Martin Streicher, 軟體開發人員, Pixel, Byte, and Comma
如果您想知道我為何佩戴黑色太陽鏡、假鬍鬚和棒球帽(模仿一個專業冰壺球隊 The Floating Stones 的徽標),那是因為我正在逃亡之中。我正在躲避黑色的遙控直升機、面色蒼白的系統管理員和許多 “妖魔鬼怪” 的追蹤,我這樣做的目的只有一個,就是向您披露 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,從一個版本跳到另一個版本。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16896827/viewspace-1036452/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ZT - 對話 UNIX: UNIX 高手的重大秘密(6)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(5)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(4)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(3)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(2)
- UNIX 技巧: UNIX 高手的另外 10 個習慣
- ZT - UNIX 網路協議的深度分析(1)協議
- UNIX 高手的 10 個習慣
- Unix 高手的另外 10 個習慣
- unix命令1
- dos2unix, unix2dos 對應的命令(轉)
- ZT - UNIX 網路協議的深度分析(5)協議
- ZT - UNIX 網路協議的深度分析(3)協議
- ZT - UNIX 網路協議的深度分析(2)協議
- Unix 高階使用者命令 lsof 和 fuser (zt)
- UNIX的架構及UNIX/Windows演進圖架構Windows
- ICAClient for UNIXclient
- Unix哲學(Unix程式設計藝術)程式設計
- Unix程式設計藝術,Unix哲學程式設計
- 遨遊Unix–APUE課程筆記【1】筆記
- unix的儲存概念
- Unix pthreadthread
- Overview of Unix ResourcesView
- UNIX VI命令
- 常用UNIX命令
- 各類unix和linux密碼丟失解決方法(zt)Linux密碼
- 《Unix 網路程式設計》15:Unix 域協議程式設計協議
- 閱讀原始碼---與高手對話原始碼
- 各種unix/linux平臺下iostat與vmstst說明ztLinuxiOS
- 在SCO UNIX系統中使用另一unix硬碟(轉)硬碟
- 關於UNIX及類UNIX下壓縮和解壓的命令簡介
- unix中dmesg的應用
- 獻給UNIX的初學者
- hp unix cluster使用的命令
- Unix原則-KISS
- UNIX基本命令
- unix date命令解疑
- unix at命令詳解