2012-11-09 10 views
2

새 대화 형 bash 쉘을 작성하려면 bash -i을 호출하십시오. 내 환경 문제로 인해 bash는 작업 제어를 주장 할 수 없으며 GNU emacs에서 cygwin bash를 사용하고 있습니다 ("터미널 프로세스 그룹을 설정할 수 없음"및 "이 셸에서 작업 제어 없음"). - 내 환경에서 장애가있는 직업 통제와 함께 살아야하지만, 경고를 없애고 싶습니다.bash가 작업 제어를 선언 할 수 없을 때 "터미널 프로세스 그룹을 설정할 수 없습니다"및 "이 쉘에 작업 제어가 없습니다"라는 경고를 내 보내지 않게하는 방법은 무엇입니까?

bash가 작업 제어를 주장하지 않고 이러한 경고를 표시하지 않도록하려면 어떻게해야합니까? 분명히 여전히 셸을 대화 형 것으로 원합니다.

참고 : 나는 .bashrc에서 set -m을 시도했지만, 배쉬는 아직 시작에 경고를 써 - 쉘이 작업 제어를 주장하려고 ~/.bashrc 파일이 후 을 실행할 수 있습니다. 거기에 사용할 수있는 명령 줄 옵션이 있습니까?

답변

3

man bashset 옵션이 있습니다. 옵션은 쉘 호출에 대한 인수로 지정할 수도 있습니다. 참고 +m이 아니라 -m이 필요합니다. 틀림없이이 설명서는 분명하지 않습니다.

그러나 bash 소스 코드 (버전 4.2)를 보면 분명히이 플래그의 상태를 무시합니다. 나는 이것이 버그라고 말할 것이다.

작은 패치를 적용하면 시작시 bash 플래그가 m 플래그가됩니다. 불행히도 이것은 다시 컴파일해야 함을 의미합니다. bash.

--- jobs.c.orig 2011-01-07 16:59:29.000000000 +0100 
+++ jobs.c  2012-11-09 03:34:49.682918771 +0100 
@@ -3611,7 +3611,7 @@ 
    } 

    /* We can only have job control if we are interactive. */ 
- if (interactive == 0) 
+ if (interactive == 0 || !job_control) 
    { 
     job_control = 0; 
     original_pgrp = NO_PID; 

작업 제어는 기본적으로 사용할 수 내 리눅스 머신에서 테스트, 그래서 당신이와 Mingw에 표시되는 오류 메시지가 여기에 인쇄되지 않습니다. 그래도 bash가 +m을 기리는 것을 알 수 있습니다.

$ ./bash --noprofile --norc 
$ echo $- 
himBH 
$ fg 
bash: fg: current: no such job 
$ exit 
$ ./bash --noprofile --norc +m 
$ echo $- 
hiBH 
$ fg 
bash: fg: no job control 
+0

@Jester의 스팟! 잘 연구되고 일관되게 서면 답변을 주셔서 감사합니다. - 그리고 그것은 심지어 나를 위해 정확하게 일을한다! ;-) – halloleo

+0

그런데 버그를 제출 했습니까? 그렇지 않다면, 나는 그렇게 행복하다. – halloleo

+0

아니, 계속하지 마라. – Jester