不要将 tmux 嵌套在远程 ssh shell 中

不要将 tmux 嵌套在远程 ssh shell 中

.zshrc我已经在我连接的所有主机上设置了我的用户帐户,tmux只要它尚未运行,就会在登录时自动启动。

if [ -z "$TMUX" ]; then tmux attach -d || tmux new fi

在我从本地主机上的 tmux 会话中 ssh(或 mosh)到远程主机上我自己的帐户之前,这种方法效果很好。由于$TMUX宏没有从本地主机传递到远程,因此 tmux 在远程主机上启动,我现在有两个嵌套的 tmux 会话。

有没有办法在保持自动启动行为的同时避免这种情况?理想情况下,我希望远程 shell 知道它是从正在连接的主机上的 tmux 会话中启动的,并且不启动第二个 tmux 实例。

我已经尝试过检查$TERM远程 shell,但xterm-256color无论它是否在本地计算机上的 tmux 会话中运行,它总是如此。

答案1

感谢 @mark-plotnick 的评论,我想我有适合我的解决方案。

在远程主机上,添加到 /etc/ssh/sshd_config:

AcceptEnv TMUX

在本地主机上,添加到 ~/.ssh/config:

Host * SendEnv TMUX

现在,env 变量的值$TMUX被发送到远程主机,并且tmux当该值非空时不再启动。

我不介意进行服务器端更改,但我希望不必编辑每个客户端,~/.ssh/config因此我愿意接受其他建议。

相关内容