.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
因此我愿意接受其他建议。