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 force
inを使用する必要があります~/.ssh/config
)。