运行命令后
{ sleep 5; } &
Run Code Online (Sandbox Code Playgroud)
输出ps是(输出1)
PID TTY TIME CMD
972 ttys000 0:00.27 -bash
2556 ttys000 0:00.00 -bash
2557 ttys000 0:00.00 sleep 5
Run Code Online (Sandbox Code Playgroud)
而对于
( sleep 5 ) &
Run Code Online (Sandbox Code Playgroud)
出ps是(输出 2)
PID TTY TIME CMD
972 ttys000 0:00.28 -bash
2566 ttys000 0:00.00 sleep 5
Run Code Online (Sandbox Code Playgroud)
()导致子shell环境,我希望在这种情况下为“输出1”,因为它会导致子进程分叉,而我希望{ sleep 5; } &在当前shell中执行时为“输出2” 。这可能看起来是一个愚蠢的问题,但我真的不明白这种行为。
我在这里缺少什么?