对于客户端/服务器通信,tmux使用 TMPDIR 环境变量指定的目录下的命名套接字(在基于 UID 的子目录中)。如果此环境变量未设置(或为空),则tmux使用_PATH_TMP
from定义的目录paths.h
;这是经常的/tmp
。
注意:“会话”的以下用法是指登录会话,而不是tmux会话。
我的猜测是您的ssh会话共享一个共同的 TMPDIR 值(可能根本没有),而您的“正常”会话使用不同的 TMPDIR 值。由于不同会话中的 TMPDIR 值不同,因此一种会话类型的客户端无法直接“看到”在另一种会话类型中启动的服务器(例如,客户端尝试使用/var/folders/random/directories/tmux-500/default
,但服务器正在侦听 /tmp/tmux-500/default
)。
要解决此问题,您只需调整 TMPDIR 以匹配ssh会话中的正常内容:
TMPDIR=$(/usr/bin/ssh localhost -t 'echo $TMPDIR') && export TMPDIR
您可以像这样确定客户尝试使用的路径:
tmux -L temp start\; info | grep path
temp
这将使用名为而不是 的套接字创建一个瞬态服务器default
,并向您显示它正在使用的套接字的路径。