启动交互式 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

相关内容