退出 tmux 后如何自动退出终端



我不确定是否提出了类似的问题,但我在SO中没有找到。

我正在使用侏儒终端 + tmux。我在.zshrc中添加了if [ "$TMUX" = "" ]; then tmux; fi,因此当我启动终端时,我会自动输入 tmux。每次我按Ctrl-D并从 tmux 退出时,我都必须再次按Ctrl-D才能退出终端。

现在,我可以在我的.zshrctmux.conf中放入什么,以便只需按一下即可退出我的 tmux 和终端。

我的想法是我可以添加一个侦听器来捕获 tmux 退出事件。如果发生该事件,让我退出窗口。但我不知道如何实现这一目标。任何帮助将不胜感激!

如果以exec开头tmux,如下所示:

exec tmux

。父进程 shell 甚至将不再位于内存中,因此退出 TMUX 不会退出回它。


因此,在您的点文件中:

if [ -t 0 ] && [[ -z $TMUX ]] && [[ $- = *i* ]]; then exec tmux; fi

[ -t 0 ]是一项安全功能:如果您的标准不是 TTY,它会避免前进。同样,$-检查避免在非交互式 shell 上运行。


顺便说一下,我通常建议将此作为终端配置的一部分,而不是 shell 配置的一部分,以避免无意中影响其他类型的 shell(例如通过 sshd 启动的shell,特别是由自动化工具而不是人类用户启动的(。脚本不应该模拟 TTY,或者声称 shell 是交互式

的,而实际上却会发生,因此这种练习可能会导致意外。

最新更新