它可能看起来像这样:[2] 2847。我猜第一个数字只是从 shell 创建的进程的枚举。第二个是PID。无论如何,我从不关心这些信息,所以看到它很烦人。有没有办法关闭它?(我发现,set +bm在.bashrc禁用所述过程终止消息)。
第一个数字是工作索引;工作相关的命令(jobs,fg,等)使用它们。因此,例如,如果您获得 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)