No meu sistema Vanila Arch Linux, posso enviar para local tmux-session
(session main
) usando:
$ tmux send -t main.0 'echo asdf' ENTER
Também posso enviar comandos para uma máquina remota usando ssh
: (apenas para demonstração, estou usando localhost
):
$ ssh garid@localhost "ls /home"
Eu quero enviar o comando tmux-session
do remote-machine
meu terminal (algo como o seguinte):
$ ssh -t garid@localhost "tmux send -t main.0 'echo asdf' ENTER"
Mas dá o seguinte erro:
error connecting to /tmp/tmux-1000/default (No such file or directory)
Connection to localhost closed.
O que eu estou fazendo errado aqui?
Nos comentários, confirmamos que o comando pretendido,
... funciona quando
remote
não é o host local.Também confirmamos que o motivo pelo qual o comando falha ao se conectar
localhost
é que aTMUX_TMPDIR
variável não está definida na sessão SSH. Essa variável de ambiente é usadatmux
para determinar onde um diretório contendo seu soquete de controle deve ser criado. Se a variável não estiver definida, o utilitário usará/tmp
.A variável não é definida quando você executa
tmux
viassh
porque a sessão é uma sessão não interativa sem login. Como tal, ele não origina seu~/.config/shell/profile
arquivo que define aTMUX_TMPDIR
variável para algo diferente de/tmp
. Este arquivo é puxado pelo LARBS , que você usa, mas do qual eu não sei nada.Agora você tem algumas maneiras possíveis de seguir em frente:
Fazer nada; O destino pretendido do comando
ssh
+ nunca foi o host local.tmux
Certifique-se de que a
TMUX_TMPDIR
variável esteja configurada corretamente ao chamar o comando emlocalhost
; Você pode fazer isso com... mas assumiria que o valor da variável localmente é o valor correto para o outro host, portanto, seria improvável que fosse uma solução genérica. Conectar-se com
ssh
tolocalhost
é uma coisa tão incomum de se fazer de qualquer maneira, então, em vez de fazer dessa maneira, volte ao primeiro ponto e não faça nada a respeito, ou ...Redefina o valor de
TMUX_TMPDIR
para o padrão/tmp
localmente modificando~/.config/shell/profile
(defina a variável para/tmp
ou comente a atribuição completamente); Eu não sei como isso pode funcionar com LARBS, no entanto.