수동으로 시작할 때멀티플렉서tmux
Bash 대화형 셸에서 실행하여 나중에 일시중지할 수 있습니다.멀티플렉서괜찮아요 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
.
.bashrc
Bash는 마치 작업 제어가 비활성화된 것처럼 시작 파일을 실행합니다 . ~에서껍데기:
#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
대체 화면에서 기만적으로 전환하기 위해 // 이스케이프 문자가 사용되지만).rmcup
te
xterm