无需运行任何配置文件(如 .zshrc)即可启动交互式 zsh

XDR*_*XDR 4 zsh

如何在不运行任何配置文件的情况下启动交互式 zsh .zshrc

我试过了zsh -d -f -i,但提示与 中指定的相同~/.zshrc,所以这些选项似乎不起作用。

我在 macOS 10.15.4 上运行 zsh 5.8。

Sté*_*las 6

zsh -d -f -i对此是正确的,尽管-d(由 暗示-f)和-izsh当没有给出任何脚本/代码在命令行上运行并且stdin是终端时以交互方式运行)将是多余的。

但是请注意,这/etc/zsh/zshenv仍然被解释,我认为没有任何方法可以禁用它。详情请参阅info zsh RCS

在你的情况下,PS1是从环境中继承的。PS1是许多也可以自定义 shell 的环境变量之一。

请注意,最早的 shell 没有 rc 文件,自定义仅使用环境变量完成(您在~/.profileor 中设置~/.login,由登录 shell 解释)。

有大量变量用于配置 shell。看:

info zsh 'Parameters Used By The Shell'
Run Code Online (Sandbox Code Playgroud)

有关详细信息(请注意,尽管对于其中一些,在环境中找到的值会被忽略)。

其中一些环境变量,如HOMEPATHSHELLCOLUMNSLANGLC_*由除壳许多其他程序使用,所以它不是一个好主意,取消或修改它们,或用env -i取消设置它们。

该文档中列出的大多数变量您都不想放入环境中,而是在您的环境中将它们声明~/.zshrc为普通的 shell 变量。PS1是其中之一。PS1在许多 shell 中用作提示自定义变量,但不同 shell 的语法差异很大。

不幸的是,一些 GNU/Linux 发行版确实PS1在某些系统启动文件中设置和导出变量,并使用特定于bashshell(GNU shell)语法的值来定义它,这意味着如果您启动除bash在具有该环境的环境中PS1,您会收到垃圾提示。

要启动PS1从环境中删除的 shell ,您可以执行以下操作:

(unset -v PS1; zsh -f)
Run Code Online (Sandbox Code Playgroud)

通过某些env实现,您还可以执行以下操作:

env -u PS1 zsh -f
Run Code Online (Sandbox Code Playgroud)

在没有环境变量的情况下启动它(尽管如上所述,这可能不是一个好主意):

env -i zsh -f
Run Code Online (Sandbox Code Playgroud)