gpt4 book ai didi

bash - 当无法断言作业控制时,如何告诉 bash 不要发出警告 "cannot set terminal process group"和 "no job control in this shell"?

转载 作者:行者123 更新时间:2023-12-04 04:13:10 24 4
gpt4 key购买 nike

要创建一个新的交互式 bash shell,我调用 bash -i 。由于我的环境问题,bash 无法断言作业控制(我在 GNU emacs 中使用 cygwin bash)并发出警告(“无法设置终端进程组”和“此 shell 中没有作业控制”)。 - 我必须在我的环境中忍受禁用的作业控制,但我想摆脱警告:

如何告诉 bash 不要断言作业控制并且不要发出这些警告?显然,我仍然希望 shell 作为交互式 shell。

注意:我已经在 set -m 中尝试过 .bashrc ,但 bash 仍然在启动时写出警告 - ~/.bashrc 文件可能会在 shell 尝试断言作业控制后执行。是否有一个可以工作的命令行选项?

最佳答案

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

关于bash - 当无法断言作业控制时,如何告诉 bash 不要发出警告 "cannot set terminal process group"和 "no job control in this shell"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com