Linux中.bashrc與.bash_profile的對比

若是你平時在命令行上花費了大量時間,那麼你可能會萌生出但願定製 Shell 環境的想法。今天本文就和你們講解該如何實現大家的這個想法。其實能夠經過建立別名、向環境變量 $PATH 添加新目錄或更改 Shell 提示符的外觀以實如今命令行上節約時間。程序員

在你尋找解決方法的過程當中可能會看到過一些教程,好比說將配置文件放在 .bashrc 或者 .bash_ profile 中,亦或是將配置放在另外一個能夠經過 Bash Shell 讀取和執行的文件中。面試

接下來,我將向你們講解 Bash 啓動文件以及 .bashrc.bash_ profile 之間的區別:bash

Interactive Login 和 Non-Login Shell

Bash 被調用時,會從一組啓動文件中讀取並執行命令,至於讀取哪些文件取決於 Shell 是做爲交互式登陸調用仍是做爲非登陸 Shell 調用。架構

其實,Shell 能夠是交互式的,也能夠是非交互式的。簡單一點地說,交互式 Shell 是一種讀寫用戶終端的 Shell,而非交互式 Shell 徹底是與終端無關的 Shell。 值得注意的是,交互式 Shell 能夠是登陸 Shell ,也能夠是非登陸 Shellssh

有幾種狀況能夠調用登陸 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 的命令。spa

每次啓動新 Shell 時應該將運行的命令放在 .bashrc 文件中,這些命令包括別名和函數、自定義提示、歷史自定義等。命令行

一般,~/.bash_profile 包含的命令來源於 .bashrc 文件中,示例以下:

這意味着每次登陸到終端時,上面兩個文件都會被讀取並執行其中的命令。

大多數 Linux 發行版都是使用 ~/.profile 而不是 ~/.bash_profile。由於 ~/.profile 文件能夠被全部 Shell 讀取,而 ~/.bash_ profile 僅能被 Bash Shell 讀取。

若是你的系統上沒有我上面所講的這些啓動文件,那麼你也能夠本身建立它們。

結論

最後,總結一下今天咱們所講的重點。.bash_profile.bashrc 是在調用 Bash 時運行的包含 Shell 命令的文件。.bash_profile 能夠在交互式登陸 Shell 上被讀取和執行,而 .bashrc 能夠在非登陸 Shell 上被讀取和執行。

若是你還對 .bashrc 這些文件有疑問或是有修改 Shell 提示符的更好的方法,請留言告訴我唄!


最後,最近不少小夥伴找我要Linux學習路線圖,因而我根據本身的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。不管你是面試仍是自我提高,相信都會對你有幫助!

免費送給你們,只求你們金指給我點個贊!

電子書 | Linux開發學習路線圖

也但願有小夥伴能加入我,把這份電子書作得更完美!

有收穫?但願老鐵們來個三連擊,給更多的人看到這篇文章

推薦閱讀:

相關文章
相關標籤/搜索