tmuxを起動するためのデフォルトシェルを設定する方法

tmuxを起動するためのデフォルトシェルを設定する方法

私は毎回tmuxを入力するのではなく、デフォルトのbashシェルがtmuxを直接入力できるようにしたいです。

答え1

@StarNamerからの返信通常は正確ですが、一般的に確認するために次のテストを実行します。

  1. tmuxシステムに存在
  2. 私たちはインタラクティブシェルにいます。
  3. tmux自体内で実行しようとしません。

だから私はこれを次に追加します.bashrc

if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
  exec tmux
fi

引用する

答え2

シェルにログインするたびにtmuxを起動します。、Arch wikiで動作するようです。.bashrcエイリアスの前に次のbash行を追加するだけです。他のシェルのコードも非常に似ています。

[[ $TERM != "screen" ]] && exec tmux

答え3

次の行を追加します。

[ -z "$TMUX"  ] && { tmux attach || exec tmux new-session && exit;}

bashrcファイルで操作を実行できます。この行は、tmux を切り離すか終了すると ssh を終了し、接続を終了します。接続を終了するキーストロークを保存するので、この設定は気に入っています。しかし、これが気に入らず(私の考えではそうではない)、終了後もログインシェルに残りたい場合は、そのexit部分を削除するだけです。

[ -z "$TMUX"  ] && { tmux attach || exec tmux new-session;}

また、接続するtmuxセッションがないと接続が閉じられるため、tmux attach改行文字を使用しないでください。exec

答え4

正常に使用しました

case $- in *i*)
    [ -z "$TMUX" ] && exec tmux
esac

私の.zshrc。 Bashを使用している場合は、これを.bashrcBashに入れます。


tmuxまた、これをデフォルトのシェル()に設定しようとしましたが、chsh -s $(which tmux)SSHを介した直接コマンドの実行が中断されるようです。たとえば、ssh $some_server echo foo出力は生成されません。

関連情報