SSHログイン時にtmuxを実行する

SSHログイン時にtmuxを実行する

SSHログイン時にtmuxを起動したいです。

一般的なアドバイスは、次に追加することです~/.bashrc

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
  tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi

しかし、ログインすると、tmuxで次のエラーが発生します。

サーバーの損失

...そしていつものように詰まった。


修正する

睡眠を追加すると:

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
  tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi

...そしてそれはすべてです。奇妙な!なぜですか?

答え1

tmux自動的に起動するには~/.bash_profile(ログインシェルの場合)または~/.bashrc(対話型シェルの場合)、次のようなものを使用します。

if [[ -z $TMUX ]] && [[ -n $SSH_TTY ]]; then
    session=mysession

    if tmux has-session -t "$session" 2>/dev/null; then
        exec tmux attach-session -t "$session"
    else
        exec tmux new-session -s "$session"
    fi
fi

tmuxシェルが起動している場合は、ssh現在のシェルがすでに実行されていない限り、シェルをセッションに置き換えますtmux

最新バージョンでは、tmux次のものを使用できます。

if [[ -z $TMUX ]] && [[ -n $SSH_TTY ]]; then
    exec tmux new-session -A -s mysession
fi

あなたはこれをしたいでしょう後ろに端末機能とロケール設定に影響する変数を設定します(例:TERMおよび(設定した場合))。LC_*

ssh実行するには擬似端末が必要なので、tmux接続する必要がありssh -tます(または接続するにはRequestTTY forceinを使用する必要があります~/.ssh/config)。

関連情報