如何在不運行任何設定檔的情況下啟動互動式 zsh .zshrc
?
我嘗試過zsh -d -f -i
,但提示與中指定的相同~/.zshrc
,因此這些選項似乎不起作用。
我在 macOS 10.15.4 上運行 zsh 5.8。
答案1
zsh -d -f -i
對此是正確的,儘管-d
(由 暗示-f
)和-i
(zsh
當沒有給定任何腳本/代碼在命令行上運行並且 stdin 是終端時無論如何以交互方式運行)將是多餘的。
但請注意,這/etc/zsh/zshenv
仍然被解釋,我認為沒有任何方法可以停用它。info zsh RCS
詳情請參閱。
就你而言,PS1
是從環境繼承的。PS1
是也可以自訂 shell 的眾多環境變數之一。
請注意,最早的 shell 沒有 rc 文件,僅透過環境變數完成自訂(您在~/.profile
或中設置~/.login
,由登入 shell 解釋)。
有大量變數用於配置 shell。看:
info zsh 'Parameters Used By The Shell'
詳細資訊(但請注意,對於其中一些,在環境中找到的值將被忽略)。
其中一些環境變數(如HOME
、PATH
、SHELL
、 、COLUMNS
、LANG
)被 shell 以外的許多其他程式使用,因此取消設定它們或使用取消設定它們LC_*
都不是一個好主意。env -i
在該文件中列出的大多數變數您都不想放入環境中,而是在您的~/.zshrc
環境中將它們聲明為普通的 shell 變數。PS1
是其中之一。PS1
在許多 shell 中用作提示自訂變量,但不同 shell 的語法差異很大。
PS1
不幸的是,一些 GNU/Linux 發行版確實在某些系統啟動檔案中設定和導出該變量,並使用特定於bash
shell(GNU shell)語法的值來定義它,這意味著如果您啟動除bash
在這樣的環境中PS1
,您會收到垃圾提示。
PS1
若要啟動從環境中刪除的shell ,您可以執行下列操作:
(unset -v PS1; zsh -f)
透過一些env
實現,您還可以執行以下操作:
env -u PS1 zsh -f
要在沒有環境變數的情況下啟動它(儘管如上所述,這可能不是一個好主意):
env -i zsh -f