當前shell是Will()構造會始終啓動一個子shell?
$ echo $$
23173
注PS的父母是當前shell
$ (ps -o pid,ppid,cmd)
PID PPID CMD
8952 23173 ps -o pid,ppid,cmd
23173 23169 bash
但在這裏,PS的父是子shell(bash)的
$ (echo hello ; ps -o pid,ppid,cmd)
hello
PID PPID CMD
8953 23173 bash
8954 8953 ps -o pid,ppid,cmd
23173 23169 bash
是bash的做優化?在第三種情況下,額外的回聲是如何產生差異並衍生出子殼體的?
熱門技巧:你可以使用'ps -H'來獲得一個進程樹,使它看起來更清楚一點,而無需自己連接PID和PPID。 (儘管這並沒有改變潛在的問題 - 它只是使其更容易看到)。 – 2011-05-08 16:31:38
要做更好的分析,首選$ BASHPID優於$$ – sehe 2011-05-08 20:45:19
請注意,如果您想要在沒有子shell的情況下進行分組,請使用'{brackets ; }'。儘管它們需要一些額外的語法(空格,分號)。 – 2011-05-09 13:11:24