啟動互動式 zsh,無需執行任何設定檔(如 .zshrc)

啟動互動式 zsh,無需執行任何設定檔(如 .zshrc)

如何在不運行任何設定檔的情況下啟動互動式 zsh .zshrc

我嘗試過zsh -d -f -i,但提示與中指定的相同~/.zshrc,因此這些選項似乎不起作用。

我在 macOS 10.15.4 上運行 zsh 5.8。

答案1

zsh -d -f -i對此是正確的,儘管-d(由 暗示-f)和-izsh當沒有給定任何腳本/代碼在命令行上運行並且 stdin 是終端時無論如何以交互方式運行)將是多餘的。

但請注意,這/etc/zsh/zshenv仍然被解釋,我認為沒有任何方法可以停用它。info zsh RCS詳情請參閱。

就你而言,PS1是從環境繼承的。PS1是也可以自訂 shell 的眾多環境變數之一。

請注意,最早的 shell 沒有 rc 文件,僅透過環境變數完成自訂(您在~/.profile或中設置~/.login,由登入 shell 解釋)。

有大量變數用於配置 shell。看:

info zsh 'Parameters Used By The Shell'

詳細資訊(但請注意,對於其中一些,在環​​境中找到的值將被忽略)。

其中一些環境變數(如HOMEPATHSHELL、 、COLUMNSLANG)被 shell 以外的許多其他程式使用,因此取消設定它們或使用取消設定它們LC_*都不是一個好主意。env -i

在該文件中列出的大多數變數您都不想放入環境中,而是在您的~/.zshrc環境中將它們聲明為普通的 shell 變數。PS1是其中之一。PS1在許多 shell 中用作提示自訂變量,但不同 shell 的語法差異很大。

PS1不幸的是,一些 GNU/Linux 發行版確實在某些系統啟動檔案中設定和導出該變量,並使用特定於bashshell(GNU shell)語法的值來定義它,這意味著如果您啟動除bash在這樣的環境中PS1,您會收到垃圾提示。

PS1若要啟動從環境中刪除的shell ,您可以執行下列操作:

(unset -v PS1; zsh -f)

透過一些env實現,您還可以執行以下操作:

env -u PS1 zsh -f

要在沒有環境變數的情況下啟動它(儘管如上所述,這可能不是一個好主意):

env -i zsh -f

相關內容