>>501

では次のコードを実行した結果です。

[test.sh]
#!/bin/sh
{ sleep 1; sleep 3; } &
{ sleep 2; sleep 2; } &
{ sleep 3; sleep 1; } &
ps f

[出力]
338 tty1 S 0:00 \_ /bin/sh ./test.sh
339 tty1 S 0:00   \_ /bin/sh ./test.sh
341 tty1 S 0:00   |  \_ sleep 1
340 tty1 S 0:00   \_ /bin/sh ./test.sh
343 tty1 S 0:00   |  \_ sleep 2
342 tty1 S 0:00   \_ /bin/sh ./test.sh
344 tty1 S 0:00   |  \_ sleep 3
345 tty1 R 0:00   \_ ps f

おやおや? 何やらtest.shが大量に生まれましたね?

これはなんでしょうか?

そうサブシェルです
{ } の中が一つの場合は最適化されサブシェルは作られなかったようですが、
{ } の中を複数にしたためサブシェルが生成されました。

つまり、 /bin/sh ./test.sh がforkされ新しいPIDを持ったプロセスが
複数生成されたということです。