配置.zshrc实现关闭终端时自动关闭Tmux会话的问题求助
配置.zshrc实现关闭终端时自动关闭Tmux会话的问题求助
嘿,我来帮你搞定这个问题!
先理下你的现状:你已经通过修改.zshrc实现了打开终端自动启动Tmux,用的配置是:
[[ -z "$TMUX" ]] && tmux -u
这个运行正常,但你现在想实现关闭终端时自动杀死对应的Tmux会话,之前尝试的trap命令没起作用,对吧?
问题出在你用了$TMUX_PANE这个变量——它是Tmux窗格的ID,不是会话的标识,所以用它来指定要杀死的会话肯定不对。
给你一个可行的解决方案,把下面这段代码加到你的.zshrc里(替换掉之前无效的trap命令):
# 仅在Tmux环境下,设置关闭终端时自动杀死当前会话 if [[ -n "$TMUX" ]]; then trap 'tmux kill-session -t "$(tmux display-message -p "#S")"' EXIT fi
简单解释下这段代码:
[[ -n "$TMUX" ]]:判断当前是否处于Tmux环境中,避免在普通终端里执行命令报错tmux display-message -p "#S":输出当前Tmux会话的名称(#S是Tmux的内置格式符,代表会话名)trap ... EXIT:捕获shell退出的事件,执行杀死对应会话的命令
保存.zshrc后,新开一个终端进入Tmux,然后关闭终端,你可以在另一个终端用tmux ls检查,对应的会话已经被清除了。
备注:内容来源于stack exchange,提问作者shohel hossain
相关产品推荐
相关产品推荐

