如果你平時在指令行上花費了大量時間,那麼你可能會萌生出希望定制 Shell 環境的想法。今天本文就和大家講解該如何實作你們的這個想法。其實可以通過建立别名、向環境變量
$PATH
添加新目錄或更改 Shell 提示符的外觀以實作在指令行上節約時間。
在你尋找解決方法的過程中可能會看到過一些教程,比如說将配置檔案放在 .bashrc 或者 .bash_ profile 中,亦或是将配置放在另一個可以通過 Bash Shell 讀取和執行的檔案中。
接下來,我将向大家講解 Bash 啟動檔案以及 .bashrc 和 .bash_ profile 之間的差別:
Interactive Login 和 Non-Login Shell
Bash 被調用時,會從一組啟動檔案中讀取并執行指令,至于讀取哪些檔案取決于 Shell 是作為互動式登入調用還是作為非登入 Shell 調用。
其實,Shell 可以是互動式的,也可以是非互動式的。簡單一點地說,互動式 Shell 是一種讀寫使用者終端的 Shell,而非互動式 Shell 完全是與終端無關的 Shell。值得注意的是,互動式 Shell 可以是登入 Shell ,也可以是非登入 Shell。
有幾種情況可以調用登入 Shell,一種是當使用者通過
ssh
或本地方式遠端登入到終端,還有就是使用
--login
選項啟動 Bash 。比如在 Shell 提示符中鍵入
bash
或打開新的 Gnome 終端頁籤時。互動式非登入 Shell 從登入 Shell 調用。
Bash啟動檔案
當 Bash 作為互動式登入 Shell 被調用時,它将查找 /etc/profile 檔案,如果該檔案存在,它将運作檔案中列出的指令。然後 Bash 按以下的順序搜尋 ~/.bash_profile 、~/.bash_login 和 ~/.profile 檔案,并在第一個找到的檔案中執行指令。
當 Bash 作為互動式非登入 Shell 被調用時,它從 ~/.bashrc 檔案讀取并執行指令,需要指出的是該檔案必須存在并且它是可讀的才行。
.bashrc 和 .bash_配置檔案之間的差異
在 Bash 作為互動式登入 Shell 被調用的情況下,.bash_profile 才會被讀取、執行,而 .bashrc 是啟動互動式非登入 Shell 時才被執行的。一般使用 .bash_profile 來運作隻運作一次的指令,比如運作自定義環境變量
PATH
的指令。
每次啟動新 Shell 時應該将運作的指令放在 .bashrc 檔案中,這些指令包括别名和函數、自定義提示、曆史自定義等。
通常,~/.bash_profile 包含的指令來源于 .bashrc 檔案中,示例如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SO2UDNzEDZkNjY3EWMyQ2YxYzX3ADNwETMwMzLcJTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
這意味着每次登入到終端時,上面兩個檔案都會被讀取并執行其中的指令。
大多數 Linux 發行版都是使用 ~/.profile 而不是 ~/.bash_profile。因為 ~/.profile 檔案可以被所有 Shell 讀取,而 ~/.bash_ profile 僅能被 Bash Shell 讀取。