tmux bashはデフォルトでtmuxを終了すると例外を除いてbashを終了します。

tmux bashはデフォルトでtmuxを終了すると例外を除いてbashを終了します。

これは説明するのが非常に複雑で、検索できる簡単な説明を想像することはできません。

私の現在の設定は、端末を開いたときにこの行が原因で

if [[ -n "$PS1" ]] && [[ -z "$TMUX" ]]
then
        tmux && exit
fi

tmuxがすぐに起動します。コマンドの後にtmuxラッパーシェルが&& exitあるので、tmuxを終了するとすぐに閉じます。tmux

私はこれが基本的に良い動作だと思いますが、まれな場合は、囲むシェルを終了せずにtmuxを分離または終了したいと思います。

tmuxの終了コードが実行され、ラッピングシェルの終了コードが実行されないようにexit 1tmuxの内部に移動してこれを行うことができると思いましたが、内部的にはtmuxが終了コード0で終了するようです。!=0exitexit 1

デフォルトでは、カプセル化されたbashを終了しますが、手動で変更できるという目標を達成する方法を想像できる人はいますか?

答え1

次の手順を実行して、ゼロ以外のシャットダウン状態でtmuxを分離できます。

tmux detach -E false

このためにエイリアスを作成することもできます。

シェルも終了するには、次のようにします。

tmux detach -E false; exit

関連情報