我的主目录中有 a.zshrc
和 a 。.zshenv
我向我的命令添加了一个新命令.zshenv
,我发现该命令至少运行了 3 次。我意识到我不小心source
从 中删除了它.zshrc
,所以我删除了该行,但它仍然运行了两次。
我尝试在脚本中回显$0
和,我得到了第一遍和第二遍。这意味着什么?有没有更好的方法来获取显示调用者的“堆栈跟踪”?$_
(~/.zshenv) (~/.zshenv)
(30) (zsh)
答案1
当您调用时,zsh
您可以使用开关调试正在发生的情况-x
。它类似于bash
的-x
switch,它显示执行时的每一行以及任何结果。
$ zsh -x
...
+/etc/profile.d/mc.sh:3> alias 'mc=. /usr/libexec/mc/mc-wrapper.sh'
+_src_etc_profile_d:9> i=/etc/profile.d/PackageKit.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/PackageKit.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/PackageKit.sh
+_src_etc_profile_d:9> i=/etc/profile.d/qt.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/qt.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/qt.sh
+/etc/profile.d/qt.sh:9> [ -z /usr/lib64/qt-3.3 ']'
+_src_etc_profile_d:9> i=/etc/profile.d/udisks-bash-completion.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/udisks-bash-completion.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/udisks-bash-completion.sh
+/etc/profile.d/udisks-bash-completion.sh:3> [ -z '' ']'
+/etc/profile.d/udisks-bash-completion.sh:3> return
+_src_etc_profile_d:9> i=/etc/profile.d/vim.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/vim.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/vim.sh
+/etc/profile.d/vim.sh:1> [ -n '' -o -n '' -o -n 4.3.10 ']'
...
输出还可以重定向到文件以供以后查看。
$ zsh -x 2>&1 | tee zsh.log
这看起来会在最后挂起,只需Ctrl+c即可停止它,然后查看生成的日志文件zsh.log
.
答案2
您是否应用了更改source ~/.zshrc
?或者注销并重新登录以使更改生效。