我如何追踪我的 zsh 会话以非零 RC 开始的原因?

How can I track down why my zsh session is starting with a non-zero RC?

在我的 ~/.zshrc 中,我的 PROMPT 设置如下:

PROMPT='%? '

这显示了作为提示执行的最后一个命令的退出状态(return 代码)(实际上 PROMPT 更复杂,但我已针对此问题对其进行了简化)。

我有一个相当复杂的 ~/.zshrc~/.zprofile - 我在 OS X 上通过 zplug - and somewhere, in the last few months, a change has crept in that causes every new zsh session that is opened, or at least every new login session (I run it inside iTerm2 使用了几个插件并启用了 "login session"),以显示1 的初始 return 代码。点击 return 或键入 "zsh" 以启动嵌套会话不会在后续提示中显示 1 return 代码,但 0 符合预期。

我认为这意味着我的 ~/.zshrc~/.zprofile 中的某处出现故障,并且正在进入提示。不幸的是,我早就忘记了我所做的可能导致这种情况的更改。我已经尝试半系统地从这些文件中删除条目以尝试缩小范围,但我运气不佳。

是否有任何技巧可以用来找出导致问题的原因?例如,我可以显示最后执行的导致非零 return 代码的命令吗?

需要说明的是,这只不过是有点突兀而已;据我所知,它没有任何其他负面影响。

最后我想通了。事实证明,一些流氓安装过程将我没有预料到的命令放在 ~/.zlogin 中。我通过逐步注释掉 ~/.z* 文件中的内容来解决这个问题。