TmuxがBash起動ファイルによって自動的に起動されると、Tmuxがハングすると、Bash対話型シェルがハングします。

TmuxがBash起動ファイルによって自動的に起動されると、Tmuxがハングすると、Bash対話型シェルがハングします。

手動で起動するときマルチプレクサtmuxBashインタラクティブシェルで実行して、後で一時停止できます。マルチプレクサ大丈夫ですCTRL-BZ。このキーの組み合わせを押すと、私が起動したBashインタラクティブシェルである親プロセスに戻ります。マルチプレクサ

しかし、設定ファイルの最後に次のコードがあります。吹く対話型シェル(~/.bashrc)定義:

# Test if neither _Tmux_ nor _Screen_ is running.
if ! [[ -n "$TMUX" || "$TERM" =~ screen ]]; then
  # Test if _Tmux_ is on the `$PATH`.
  if type -p tmux &> /dev/null; then
    # Try to attach to latest unattached session or start a new one.
    { tmux attach-session || tmux new-session; } &> /dev/null
  fi
fi

このコードスニペットは自動的に開始されます。マルチプレクサ始めるたびに吹く対話式シェルは、端末マルチプレクサプログラムがまだ実行されていないと仮定します。

しかしCTRL-BZ今回は一時停止を押してくださいマルチプレクサ応答しない親プロセスに残すと、自動的に実行されるBash対話型シェルマルチプレクサ起動ファイル( ~/.bashrc)から。

別れを除いてマルチプレクサセッションからセッションに再接続する方法はありますか?マルチプレクサ親エントリで作業を続けるために一時停止しました。吹くインタラクティブシェルを使用して後で返すとfg?に前景化されます。

様々な理由で吹くクロスマルチプレクサ()に置き換えられませんexec

ベストアンサー1

set -m.bashrc始める前にジョブ制御を有効にする必要がありますtmux

.bashrcBashは、操作制御が無効になっているかのように起動ファイルを実行します。 ~からシェル:

#if defined (JOB_CONTROL)
  /* Startup files should be run without job control enabled. */
  old_job_control = interactive_shell ? set_job_control (0) : 0;
#endif

C-b C-zバックグラウンド自体ではtmuxを設定しません。業務管理が不足している親シェルでは、tmux が送信したシグナルによってプロセスがSIGTSTP停止します。tmuxまだターミナルの前景プロセスグループに配置されます(たとえば、一部のターミナルエミュレータでは、代替画面exit_ca_modeで欺瞞的に切り替えるために//エスケープ文字が使用されます)。rmcuptexterm

おすすめ記事