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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Unix pthreadthread
- Unix哲學(Unix程式設計藝術)程式設計
- 《Unix 網路程式設計》15:Unix 域協議程式設計協議
- 遨遊Unix–APUE課程筆記【1】筆記
- Unix, Linux 和MacOSLinuxMac
- 【UNIX】DBA常用的linux命令Linux
- UNIX 常用命令
- unix signal : signalfd, eventfd, timerfd
- smash:一個類unix核心
- window格式改為unix格式
- Unix 時間戳與日期時間戳
- Unix、Linux、GNU 關係梳理Linux
- MIT6.S081/6.828 實驗1:Lab Unix UtilitiesMIT
- 如何將UTC時間轉換為Unix時間戳(How to convert UTC time to unix timestamp)時間戳
- Unix環境高階程式設計——第一章-UNIX基礎知識程式設計
- 譯| 關於 Unix 命令 `yes` 的小故事
- 理解 Linux/Unix 登入指令碼的技巧Linux指令碼
- MIT6.S081 - Lab1: Xv6 and Unix utilitiesMIT
- 『學了就忘』Linux基礎 — 1、UNIX系統介紹Linux
- golang.org/x/sys/unix: unrecognizedGolangZed
- unix cm單節點啟動
- Unix 入門經典 筆記筆記
- Linux/Unix重要find命令詳解Linux
- Unix 即將迎來 50 歲
- 理解 Linux/Unix 登入指令碼Linux指令碼
- Kioptrix Level 1(Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4)ApacheLinux
- Unix哲學17條原則的新感悟
- syslog--unix like系統常用的log工具
- Unix、Windows、Mac OS、Linux系統故事WindowsMacLinux
- Linux vs. Unix:有什麼不同?Linux
- HP-UNIX 建立檔案系統
- NetBSD 10.0 - 類 UNIX 作業系統作業系統
- windows txt怎麼轉成unix 格式Windows
- PostgreSQL DBA(132) - pgAdmin(unix_socket_directories)SQL
- UNIX Domain Socket實現簡易聊天AI
- 九、Linux/UNIX操作命令積累【rpm】Linux
- hp-unix下的高可用叢集設定
- CSC3150Unix的教學作業系統作業系統
- 4 種繞過 Linux/Unix 命令別名的方法Linux