Tmuxがsshログインで起動するようにします。
一般的なアドバイスは、これを~/.bashrc
に追加することです。
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi
しかし、ログインすると、tmuxから次のエラーが表示されます。
失われたサーバー
...そして、いつものようにbashにいます。
更新
睡眠を追加するとき:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi
...それが機能します。おかしい!理由は何ですか?
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
これを行うにはafterTERM
やLC_*
などの変数を設定します(これらを設定した場合)。これらは端末の機能とロケールに影響します。
ssh
はtmux
を実行するために疑似ttyを必要とするため、ssh -t
で接続する必要があります(またはRequestTTY force
で~/.ssh/config
を使用して接続する必要があります)。 。