在我的 vanila Arch Linux 系统上,我可以使用以下命令发送到本地tmux-session
(会话main
):
$ tmux send -t main.0 'echo asdf' ENTER
我还可以使用ssh
: 向远程机器发送命令(仅用于演示,我正在使用localhost
):
$ ssh garid@localhost "ls /home"
我想从我的终端发送命令tmux-session
(remote-machine
如下所示):
$ ssh -t garid@localhost "tmux send -t main.0 'echo asdf' ENTER"
但它输出以下错误:
error connecting to /tmp/tmux-1000/default (No such file or directory)
Connection to localhost closed.
我在这里做错了什么?
在评论中,我们已经确认预期的命令,
...在
remote
不是本地主机时工作。我们还确认,连接时命令失败的原因
localhost
是TMUX_TMPDIR
SSH 会话中未设置变量。此环境变量用于tmux
确定应在何处创建包含其控制套接字的目录。如果未设置变量,该实用程序将使用/tmp
.执行
tmux
via时未设置该变量,ssh
因为会话是非交互式非登录会话。因此,它不会获取您的~/.config/shell/profile
文件,该文件将TMUX_TMPDIR
变量设置为/tmp
. 该文件由您使用的LARBS 提取,但我对此一无所知。您现在有几种可能的前进方式:
没做什么;
ssh
+命令的预期目标tmux
绝不是本地主机。确保
TMUX_TMPDIR
在调用命令时变量设置正确localhost
;你可以这样做...但它会假设本地变量的值是其他主机的正确值,因此它不太可能成为通用解决方案。无论如何,与
ssh
to连接localhost
是一件非常不寻常的事情,所以不要这样做,而是循环回到第一点并且不做任何事情,或者......通过修改将 的值在本地重置为
TMUX_TMPDIR
默认值(将变量设置为或将赋值完全注释掉);不过,我不知道这如何与 LARBS 一起玩。/tmp
~/.config/shell/profile
/tmp