2012-11-09 52 views
2

要創建一個新的交互式bash shell,我打電話給bash -i。由於我的環境問題,bash無法斷言作業控制(我在GNU emacs中使用cygwin bash)併發出警告(「無法設置終端進程組」和「在此shell中無作業控制」)。 - 我必須在我的環境中使用禁用的作業控制,但我想擺脫以下警告:如何告知bash在無法斷言作業控制時不發出警告「無法設置終端進程組」和「在此shell中無作業控制」?

如何告知bash不要聲明作業控制並不發出這些警告?我顯然仍然希望shell是一個交互式的shell。

注:我曾嘗試在.bashrcset -m,但仍慶典寫出的警告在啓動時 - 在~/.bashrc文件可能後執行殼試圖斷言作業控制。有沒有可以工作的命令行選項?

回答

3

man bash說約set選項該選項也可以指定爲調用shell的參數。請注意,您將需要+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; 

測試我的Linux機器在那裏作業控制是默認提供的,所以你的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

BTW,您所提交的bug?如果不是這樣,我很樂意這樣做。 – halloleo

+0

不,我沒有,繼續前進。 – Jester

相關問題