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

How to exit terminal automatically after exiting tmux

不知道有没有人问过类似的问题,SO里没找到

我正在使用 gnome 终端 + tmux。我在我的 .zshrc 中添加了 if [ "$TMUX" = "" ]; then tmux; fi 所以当我启动终端时,我会自动输入 tmux。每次我按 Ctrl-D 从 tmux 退出时,我必须再次按 Ctrl-D 从终端退出。

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

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

如果您以 exec 开始 tmux,如:

exec tmux

...父进程 shell 甚至不再存在于内存中,因此退出 tmux 不会退出。


因此,在您的点文件中:

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

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


顺便说一句——我通常建议将这部分作为您的 终端 配置的一部分,而不是您的 shell[=31= 的一部分] 配置,以避免无意中影响其他类型的 shell(例如通过 sshd 启动的,特别是通过自动化工具而不是人类用户启动的)。脚本 不应该 模拟 TTY,或者声称 shell 它们是交互的,但它们不是,但它在实践中发生,因此这种实践可以带来惊喜。