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

관련 정보