接続するすべてのホストにユーザーアカウントの.zshrc
を設定し、まだ実行されていない限り、ログイン時にtmux
を自動的に開始します。
if [ -z "$TMUX" ]; then tmux attach -d || tmux new fi
これは、ローカルホストのtmuxセッション内からリモートホストの自分のアカウントにssh(またはmosh)するまではうまく機能します。 $TMUX
マクロはローカルホストからリモートに渡されないため、tmuxはリモートホストで起動し、2つのネストされたtmuxセッションがあります。
自動起動動作を維持しながらこれを回避する方法はありますか?理想的には、リモートシェルが、接続しているホスト上のtmuxセッション内から起動されていることを認識し、2番目のtmuxインスタンスを起動しないようにします。
リモートシェルで$TERM
をチェックしようとしましたが、ローカルマシンのtmuxセッション内で実行されているかどうかに関係なく、常にxterm-256color
です。
@ mark-plotnickのコメントのおかげで、私には自分に合った解決策があると思います。
リモートホストで、/ etc/ssh/sshd_configに次を追加します。
AcceptEnv TMUX
ローカルホストで、〜/ .ssh/configに追加します。
Host * SendEnv TMUX
これで、$TMUX
env変数の値がリモートホストに送信され、値が空白でない場合はtmux
が起動しなくなりました。
サーバー側で変更を加えてもかまいませんが、すべてのクライアントを編集する必要がないことを望みます~/.ssh/config
なので、追加の提案を受け入れることができます。