質問: sshログイン時にtmuxを実行する 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 これを行うにはafter termやlc_*などの変数を設定します(これらを設定した場合)。これらは端末の機能とロケールに影響します。sshはtmuxを実行するために疑似ttyを必要とするため、ssh -tで接続する必要があります(またはrequesttty forceで~/.ssh/configを使用して接続する必要があります)。 。