如何在不运行任何配置文件的情况下启动交互式 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