導出或不導出 bash PS1 變數
我剛剛花了很多時間閱讀登錄和互動式 shell,以及為什麼應該或不應該在各種配置文件和 bashrc 文件中設置環境變數、shell 函式等。在這篇文章中提到了 bash 特定的東西,比如提示選項應該在 ~/.bashrc 中設置。這讓我想知道 PS1 變數。在我看到的所有關於此的範例中,它們都有類似
export PS1=""
. 這真的應該被導出到環境中,因為它只對 bash 有意義嗎?只是PS1=""
在我的 ~/.bashrc 中對我產生了預期的效果,但我想知道我是否遺漏了一些東西。
沒錯:
PS1
僅在 bash 的互動式實例中才有意義,因此應該設置它~/.bashrc
而不應該導出它。PS1
在其他 shell 中也有意義,但它具有不同的含義,因為 shell 之間的提示擴展不同。事實上,即使在 bash 實例之間,PS1
也可以有不同的含義,因為含義取決於 shell 選項(至少promptvars
)。從 from導出
PS1
到環境.profile
是對 1970 年代的倒退,當時只有一個 shell 使用它(Bourne shell)並且它沒有配置文件。如果您始終使用相同的外殼並且從不進行不同的配置,它今天仍然有效。但是所有不是純粹為腳本設計的現代 shell(csh、ksh、bash、zsh 等)在互動式啟動時都會讀取配置文件(、、、、、… ).cshrc
,因此不再需要 1970 年代的方法。在特定於 shell 的文件中設置和其他特定於 shell 的設置,而不是將其導出到環境,避免在您使用不同的 shell 配置或不同的 shell 或無法顯示通常提示的不同終端時破壞事情幻想。環境.kshrc``.bashrc``.zshrc``PS1``PS1
在特定於 shell 的文件中始終有效,而將其設置.profile
和導出僅在“簡單”情況下有效,因此沒有理由不以正確的方式進行操作,但是網路上有很多不好的教程,甚至發行版中的錯誤預設配置。生活吧。