Linux 之 Bash -- shell 的變量功能(二)

由於這部分的內容有點多,擠在一篇文章裏不容易理清思路,長篇幅也容易使人倦怠,那麼panda就把它切分成小的知識塊,咱們就從這些細碎的小文章中,一點點成長吧~

1.環境變量的功能

1.1 常見的環境變量

在命令行內輸入 “env”,就可以查看目前shell環境下的所有環境變量與其內容。panda充分利用了MAC筆記本的Terminal,利用它來練手BASH了:


  • HOME
    代表用戶的家目錄,還記得 Linux 系統基本操作 中,我們可以通過cd 或者 cd ~直接回到自己的home目錄,就是取用了HOME變量。
  • SHELL
    其內容代表目前環境使用的SHELL是哪支程序,Panda的MAC使用的是 /bin/bash
  • PATH
    與文件搜索有關,它就是執行 文件搜索 的路徑!
    不同目錄以:分隔,文件的搜尋順序是依序由PATH的變量內的目錄來查詢,所以,目錄的順序在高效搜索文件時就顯得非常重要了
  • LANG
    代表語系數據,一般來說,我們中文編碼通常是zh_TW.Big5 或者 zh_TW.UTF-8

1.2 環境變量與自定義變量

👆我們通過env可以獲取當前的環境變量信息,除了環境變量,bash還有一些與bash操作接口有關的變量,以及用戶自己定義的變量(還記得上一節提到的“變量設定”嗎?設定變量就是在自定義變量啊~)
如果我們想查看當前shell的所有變量信息,僅僅通過“env”獲取環境變量就不能滿足我們的“好奇心”了,那就要通過“set”來觀察了。
命令行中輸入set後,屏幕裏密密麻麻就出現了一大堆符號,還是拿鳥哥里面的圖片來做解釋吧:


一般來說,不論是環境變量還是與shell操作接口 相關的變量,通常都設定爲大寫字符。基本上,在Linux預設的情況下,使用{大寫的字母}來設定的變量爲系統內定需要的變量。這也是爲什麼我們上一節在學習“變量設定”時,鼓勵大家使用小寫字母來設定自定義變量的原因,講幾個其中比較重要的變量吧。

  • PSI 提示字符的設定
    -- \d : 可顯示出日期格式
    -- \H : 完整的主機名
    -- \h : 僅取主機名在第一個小數點之前的名字
    -- \t :顯示時間,爲24小時格式的「HH:MM:SS」
    -- \T : 顯示時間,爲12小時格式的「HH:MM:SS」
    -- \A : 顯示時間,爲12小時格式的「HH:MM」
    -- \u : 顯示使用者的賬號名稱
    -- \w :完整的工作目錄名稱
    -- \W : 利用 basename 函數取得工作目錄名稱,所以僅會列出最後一個目錄名
    -- # : 下達的第幾個指令
    -- \ :提示字符,如果是root時,提示字符爲#,否則就是
    怎麼更改自己登陸服務器後的提示符?以圖爲例吧:
  • $
    “$” 本身也是個變量,它代表的是“目前這個shell的線程代號”,也就是所謂的PID(Process ID),如果想知道我們的shell的PID,直接輸入命令 $$就可以了。
  • ?
    ? 也是一個特殊的變數,這個變數是:上一個執行的指令 回傳的值
    當我們執行某些指令時,這些指令都會回傳一個執行後的代碼。一般來說,如果成功得執行該指令,會回傳一個0值(說明沒有出現問題),如果執行發生錯誤,就會回傳“錯誤代碼”,一般都是非0數值。通過圖中的示例你會理解得更方便:

1.3 自定義變量轉成環境變量 (export)

當你登入Linux並取得一個bash之後,你的bash就是一個獨立的程序,這個程序的識別使用的是一個稱爲程序標識符的東西,也就是PID。接下來你在這個bash底下所下達的任何指令都是由這個bash所衍生出來的,那些被下達的指令就被稱爲子程序了。
子程序僅會繼承父程序的環境變量,子程序不會繼承父程序的自定義變量,所以需要 export 變量名稱,將自定義變量轉成環境變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章