編寫自己的Shell組態檔(指令碼)

2020-07-16 10:04:47
學習了《Shell組態檔的載入》一節,讀者應該知道 Shell 在登入和非登入時都會載入哪些組態檔了。對於普通使用者來說,也許 ~/.bashrc 才是最重要的檔案,因為不管是否登入都會載入該檔案。

我們可以將自己的一些程式碼新增到 ~/.bashrc,這樣每次啟動 Shell 都可以個性化地設定。如果你有程式碼潔癖,也可以將自己編寫的程式碼放到一個新檔案中(假設叫 myconf.sh),只要在 ~/.bashrc 中使用類似. ./myconf.sh的形式將新檔案引入進來就行了
使用 source 命令引入其它程式碼檔案時有一些細節需要注意,我們將在《Shell模組化》一節中展開討論。

範例1:給 PATH 變數增加新的路徑

你曾經是否感到迷惑,Shell 是怎樣知道去哪裡找到我們輸入的命令的?例如,當我們輸入 ls 後,Shell 不會查詢整個計算機系統,而是在指定的幾個目錄中檢索(最終在 /bin/ 目錄中找到了 ls 程式),這些目錄就包含在 PATH 變數中。

當使用者登入 Shell 時,PATH 變數會在 /etc/profile 檔案中設定,然後在 ~/.bash_profile 也會增加幾個目錄。如果沒有登入 Shell,PATH 變數會在 /etc/bashrc 檔案中設定。

如果我們想增加自己的路徑,可以將該路徑放在 ~/.bashrc 檔案中,例如:

PATH=$PATH:$HOME/addon

將主目錄下的 addon 目錄也設定為系統路徑。假如此時在 addon 目錄下有一個 getsum 程式,它的作用是計算從 m 累加到 n 的和,那麼我們不用 cd 到 addon 目錄,直接輸入 getsum 命令就能得到結果。

在《Shell命令的本質到底是什麼》一節中我已經給出了 getsum 程式及其原始碼,有興趣的讀者可以猛擊這裡下載。下載完成後請設定環境變數,然後輸入如下的命令就可以得到結果:
[c.biancheng.net]$ getsum -s 1 -e 100
5050
-s選項表示起始(start)數位,-e選項表示終止(end)數位,以上命令用來計算從 1 累加到 100 的和。

範例2:修改命令提示字元的格式

在《修改Linux命令提示字元》一節中我曾提到,修改 PS1 變數的值就可以修改命令提示字元的格式,但是那個時候大家還不了解 Shell 啟動檔案,所以只能臨時性地修改,並不能持久。

現在我們已經知道,在 ~/.bashrc 檔案中修改 PS1 變數的值就可以持久化,每個使用 Shell 的使用者都會看見新的命令提示字元。

將下面的程式碼新增到 ~/.bashrc 檔案中,然後重新啟動 Shell,命令提示字元就變成了[c.biancheng.net]$

PS1="[c.biancheng.net]$ "