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