bash에서 작업 제어 사용 안함 (CTRL-Z)


12

실수로 CTRL+ Z를 누르면 응용 프로그램이 백그라운드로 사라지는 경우가 종종 있습니다. 나는 그것을 다시 가져올 수 있다는 것을 알고 fg있으므로 그렇게 큰 문제는 아닙니다. 그러나 job control어쨌든 이것을 끄는 것이 궁금 합니다. 평생 동안, 나는 필요할 때 하나의 사례를 기억할 수 없으며 단지 과거의 유물로 보입니다.

job control완전히 비활성화해도 괜찮 습니까? 아니면 뭔가 빠졌습니까?이 기능이 유용 할 수 있습니까? 내에서 어떻게 비활성화합니까.bashrc

최신 정보:

set +m@Falsenames가 제안한대로 시도 했습니다. 그러나 이것은 터미널에 입력 할 때만 작동합니다. set +m내 추가 .bashrc는 효과가 없습니다.


1
업데이트를 다시 : 사실 $-(활성 옵션 목록) 더 이상 포함 m당신이 배치 할 때 set +m당신의 ~/.bashrc강타가되는 것을 제안 하려고 작업 제어를 해제했지만 결국 그렇게 때문에로하지 않는 버그 -을 통해 가치가보고 될 수있다 bug-bash@gnu.org
mklement0

답변:


8

명령 행에 다음을 추가하여 모니터링 모드 사용을 중지 할 수 있습니다.

+ m 설정

나중에 ctrl-z 기능이 필요한 경우 'set -m'을 입력하여 해당 세션에 대한 모니터링을 활성화 할 수 있습니다.

에서 남자 bash는 . 이 설정은 '-m'이며 "+ m"은 해당 설정을 비활성화로 전환합니다.

set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...] 
....
-m
    Monitor mode. Job control is enabled. This option is on by default for interactive
    shells on systems that support it (see JOB CONTROL above). Background processes 
    run in a separate process group and a line containing their exit status is printed
    upon their completion. 

마지막 도랑 노력으로 "--enable-job-control"플래그없이 bash 버전을 수동으로 컴파일 할 수 있습니다. 다음은 GNU 의 빠른 설치 안내서 입니다. 이 라우트를 선택하면 bash를 통해 실행되는 백그라운드 프로세스가 작업 제어를 예상하는 경우에만 / bin / bash를 바꾸지 마십시오. 대신 /bin/bash.alt 또는 다른 파일을 만드십시오. usermod를 실행하거나 / etc / passwd를 루트로 편집하여 기본 쉘을이 대체 쉘로 변경할 수 있습니다.


set +m터미널에서 작동하지만 내에 추가해도 .bashrc효과가 없습니다.
Martin Vegter

아 맞아. 그 시점에서 특정 스크립트로 현지화되었습니다. 그런 다음 bash는 기본값을 주장합니다.
Falsenames

내 자신의 배쉬를 컴파일하는 것은 작업 제어를 비활성화하는 데 드는 대가가 상당히 높은 것 같습니다. 를 통해 작동하는 설정이 있어야합니다 .bashrc.
Martin Vegter

이것은 모두 컴파일 타임에 설정되므로 셸 실행이 시작된 후로드되는 설정 파일에서 변경할 수있는 방법이 필요하지 않습니다. 여기서 문제는 누군가가 사용중인 배포판의 기본값으로 사용 가능한 bash WITH 작업 제어를 컴파일하기로 결정했다는 것입니다. 나는 매일 직장에서 다양한 직무를 사용하기 때문에 개인적으로 그것에 대해 논쟁 할 수 없으며, 그것이 없으면 인생에 쉽게 적응할 수 있는지 확신 할 수 없습니다. 물론, 그것은 당신의 경험이 아니라 내 경험입니다 ... 이것이 옵션을 제공하기 위해 컴파일에 플래그가있는 이유입니다.
Falsenames 2016 년

4

stty susp undef대부분의 프로그램에서 키보드 시작 일시 중단 신호를 비활성화하지만 특정 바인딩 vim과 같은 명령과 emacs특정 바인딩이있는 명령은 Ctrl-Z개별적으로 재구성해야합니다.

해당 stty 명령을 ~/.bash_profile또는 ~/.profile에 로그 아웃 한 후 다시 로그인 할 수 있습니다 .


이것은 실제로 일부 프로그램에서 작동합니다. 그러나 예를 들어 mc작동하지 않습니다. 기본적으로 말한 내용을 확인합니다. 모두에게 적합한 범용 솔루션이 있습니까?
Martin Vegter

방금 알았지 만 set +m작동 mc하지만 터미널에 입력 .bashrc하거나 입력하지 않은 경우에만 가능합니다 .profile.
Martin Vegter 2018 년

3

아니면 뭔가 빠졌습니까?이 기능이 유용 할 수 있습니까?

질문 의이 부분에 대답하려면 Cz / fgcombo가 vim 워크 플로우에 필수적입니다. 예를 들어, 내가 Cz를 선호> git commit> fg정력 내에서 자식 포장지를 사용합니다.

Cz는 " 한 가지 일 "원칙에 따라 쉘을 IDE로 취급하는 데 도움을줍니다 . ( "IDE as editor"대신에).


1
^Z여전히 유용하지만 터미널이 창이 아니라 앞에있는 상자 일 때 더욱 유용했습니다. 그리고 당신은 하나 밖에 없었습니다.
Volker Siegel

2

trap "" SIGTSTP스크립트에 추가 하십시오. 신호를 잡아서 무시합니다.

#!/bin/bash
trap "" SIGTSTP
watch date
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.