首页 > 解决方案 > zsh - 如何在执行无效命令时自动重置会话;避免“断管”消息

问题描述

我在 iTerm2 上使用 oh-my-zsh。每次执行无效命令时,zsh 都会显示“Broken Pipe”消息。请看下面的屏幕截图:

zsh-broken-pipe-消息

我必须通过按“command+R”(Macbook)手动重置会话,以便恢复提示并再次开始使用 shell。

我希望 zsh/iTerm2 在执行无效命令的情况下自动恢复提示。

我可以在 zsh 中进行任何设置/配置以实现所需的行为吗?

编辑:我的 iTerm 配置为使用 zsh 而不是登录 shell。

标签: zshiterm2oh-my-zsh

解决方案


经过一番研究,我找到了解决方案。

我们可以使用 zsh 的 ERROR 陷阱来重新启动 shell,以防命令出错或命令以错误状态退出。

我在 .zshrc 文件中写了以下内容:

TRAPZERR() {
if [[ $? -gt 0 ]];then
     /Applications/iTerm.app/Contents/MacOS/iTerm2 --launch_shell
fi
}

它奏效了!


推荐阅读