bash:禁用新进程 PID 消息

Ema*_*erg 3 bash process

它可能看起来像这样:[2] 2847。我猜第一个数字只是从 shell 创建的进程的枚举。第二个是PID。无论如何,我从不关心这些信息,所以看到它很烦人。有没有办法关闭它?(我发现,set +bm.bashrc禁用所述过程终止消息)。

Mic*_*zek 5

第一个数字是工作索引;工作相关的命令(jobsfg,等)使用它们。因此,例如,如果您获得 output [2] 2847,您可以运行fg 2到前台该作业。

据我浏览源代码可以看出,没有办法禁用该消息。它所做的一项检查是确保 shell 是交互式的,因此如果您在非交互式 shell 中运行该命令,您将不会获得该输出。例如,您可以在子 shell 中运行它:

$ (your_command &)
Run Code Online (Sandbox Code Playgroud)

这相当于在一个完全不同的 shell 中运行命令,所以它可能有其他不想要的副作用

如果你愿意修补bash,你可以摆脱那个特定的输出。在 bash 4.2 中,它jobs.c在线1428

fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);
Run Code Online (Sandbox Code Playgroud)

它在其他情况下被调用;如果你只是想让它在这个特殊情况下消失,你可以注释掉execute_cmd.c,行762

DESCRIBE_PID (last_made_pid);
Run Code Online (Sandbox Code Playgroud)