私の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.
私がここで何を間違っているのか?
答え1
コメントに私たちは確認しました予想されるコマンド、
ssh remote "tmux send -t main.0 'echo asdf' ENTER"
... remote
localhostではない場合に動作します。
私たちはまだ確認済み接続時にコマンドが失敗する理由は、SSHセッションで変数が設定されていないlocalhost
ためです。この環境変数は、制御ソケットを含むディレクトリを作成する場所を決定するTMUX_TMPDIR
ために使用されます。tmux
この変数が設定されていない場合、ユーティリティはを使用します/tmp
。
tmux
ssh
viaを実行すると、セッションは非対話型の非ログインセッションであるため、変数は設定解除されます。したがって、変数をに~/.config/shell/profile
設定しません。ファイルをインポートします。TMUX_TMPDIR
/tmp
ラルブス、あなたはそれを使用しますが、私はそれについて何も知りません。
今、いくつかの可能な方法があります。
何もしません。
ssh
+コマンドの意図されたターゲットtmux
は決してlocalhostではありません。TMUX_TMPDIR
コマンドを呼び出すときに変数が正しく設定されていることを確認してくださいlocalhost
。ssh localhost "env TMUX_TMPDIR='$TMUX_TMPDIR' tmux send -t main.0 'echo asdf' ENTER"
...しかし、ローカル変数の値が他のホストの正しい値であると仮定するので、普遍的な解決策になる可能性はありません。とにかく
ssh
toにつながるlocalhost
のは珍しいことだから、そうする代わりに最初のポイントにループバックして何もしないか…値を
TMUX_TMPDIR
変更して(変数を設定するか、割り当て全体をコメントアウトして)、ローカルのデフォルト値にリセットします。しかし、LARBSがこれをどのように使用しているのかわかりません。/tmp
~/.config/shell/profile
/tmp