SSHログイン時に既存のtmuxセッションを実行するか、存在しない場合は作成します。

SSHログイン時に既存のtmuxセッションを実行するか、存在しない場合は作成します。

SSH経由でサーバーにログインするたびにtmuxセッションを開きたいです。セッションがある場合は接続し、存在しない場合は作成して接続します。

これを行うにはファイルを編集する必要があると思います~/.bashrcが、bashスクリプトでif / elseステートメントや他の操作を実行する方法がわかりません。

どうすればいいですか?

答え1

tmuxtmux attach自分で以前のセッションに関連付けられた新しいセッションを開始します。

tmux attach前のセッションがなければ失敗します。

これら2つの事実を組み合わせると、次の解決策が提供されます。

tmux attach || tmux

最初に試してtmux attach失敗すると、それtmux自体が実行されます。その場合は前のセッションに接続し、そうでない場合は新しいセッションを開始してください。これが最初の部分です。

2番目の部分では、SSHを介してログインするたびにこのコードを実行しようとしています。したがって、次の点を確認する必要があります。

  1. ログインシェルかどうか。これはを使用して行うことができますshopt -q login_shell
  2. SSH経由で接続するかどうか。これは$SSH_CLIENT設定されていることを確認することで行うことができます。例: [ -n "$SSH_CLIENT" ]

したがって、これを最後に追加する必要があります.bashrc

if shopt -q login_shell && [ -n "$SSH_CLIENT" ]; then
    tmux attach || tmux
fi

関連情報