退出tmux后如何自动退出终端
How to exit terminal automatically after exiting tmux
不知道有没有人问过类似的问题,SO里没找到
我正在使用 gnome 终端 + tmux。我在我的 .zshrc
中添加了 if [ "$TMUX" = "" ]; then tmux; fi
所以当我启动终端时,我会自动输入 tmux。每次我按 Ctrl-D
从 tmux 退出时,我必须再次按 Ctrl-D
从终端退出。
现在,我可以在我的 .zshrc
或 tmux.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 它们是交互的,但它们不是,但它在实践中发生,因此这种实践可以带来惊喜。
不知道有没有人问过类似的问题,SO里没找到
我正在使用 gnome 终端 + tmux。我在我的 .zshrc
中添加了 if [ "$TMUX" = "" ]; then tmux; fi
所以当我启动终端时,我会自动输入 tmux。每次我按 Ctrl-D
从 tmux 退出时,我必须再次按 Ctrl-D
从终端退出。
现在,我可以在我的 .zshrc
或 tmux.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 它们是交互的,但它们不是,但它在实践中发生,因此这种实践可以带来惊喜。