如何在不运行任何配置文件的情况下启动交互式 zsh .zshrc?
我试过了zsh -d -f -i,但提示与 中指定的相同~/.zshrc,所以这些选项似乎不起作用。
我在 macOS 10.15.4 上运行 zsh 5.8。
zsh -d -f -i对此是正确的,尽管-d(由 暗示-f)和-i(zsh当没有给出任何脚本/代码在命令行上运行并且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)
有关详细信息(请注意,尽管对于其中一些,在环境中找到的值会被忽略)。
其中一些环境变量,如HOME,PATH,SHELL,COLUMNS,LANG,LC_*由除壳许多其他程序使用,所以它不是一个好主意,取消或修改它们,或用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)