我正在尝试处理我的 shell 启动文件,但我不明白为什么我的etc/zshenv
运行两次。我的所有启动文件中都有 echo 语句,这就是我得到的:
In /etc/zshenv
In ~/.zshenv for user: davidkennell
In /etc/zshrc
In ~/.zshrc for user: davidkennell
In /etc/zshenv
我通过 iTerm2 首选项将 zsh 设置为我的 shell,并在Profiles/general
设置中告诉它通过运行来启动 shell/usr/local/bin/zsh
答案1
给定消息的顺序,您的某些内容.zshrc
将/etc/zshenv
被执行。这可以是对源的调用/etc/zshenv
,也可以是对 zsh 另一个实例的调用。寻找类似的东西
. /etc/zshenv
source /etc/zshenv
zsh -c …
zsh /path/to/file
/path/to/file # which starts with #!/usr/bin/env zsh
或这些的变体。
请注意,有问题的行可能位于.zshrc
其本身,也可能位于其来源的另一个文件中。
您可以运行zsh -x
或zsh -f -x ~/.zshrc
并在跟踪中查找有问题的命令。可能比在源代码中找到它更容易。
执行另一个恰好是 zsh 脚本的程序的情况是最难检测的。为此,可能更容易监控对以下内容的访问/etc/zshenv
。另一方面,如果确实发生了这种情况,那是完全正常的,没有什么可做的。