5

新しいインタラクティブなbashシェルを作成するために、を呼び出しますbash -i。私の環境の問題により、bashはジョブ制御をアサートできず(GNUemacsでcygwinbashを使用しています)、警告を発行します(「ターミナルプロセスグループを設定できません」および「このシェルにジョブ制御がありません」)。-自分の環境で無効になっているジョブ制御を使用する必要がありますが、警告を取り除きたいと思います。

ジョブ制御をアサートせず、これらの警告を発行しないようにbashに指示するにはどうすればよいですか?私は明らかに、シェルをインタラクティブなものとして望んでいます。

注:試してみset -mました.bashrcが、bashは起動時に警告を書き込みます。シェルがジョブ制御をアサートしようとした~/.bashrcにファイルが実行される可能性があります。動作するコマンドラインオプションはありますか?

4

1 に答える 1

4

man bashは、setオプションについて次のように述べています。オプションは、シェルの呼び出しに対する引数として指定することもできます。必要+mないことに注意してください-m。確かに、マニュアルはそれについて明確ではありません。

ただし、bashソース コード (バージョン 4.2) を見ると、このフラグの状態が無視されているようです。これはバグだと思います。

次の小さなパッチを適用すると、起動時にフラグが優先されますbashm残念ながら、これは再コンパイルする必要があることを意味します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
于 2012-11-09T02:46:46.120 に答える