サブシェルのpidを取得する方法は?
たとえば、
$ echo $$
16808
元のシェルが拡張されているため機能しません$$
。
$ ( echo $$ )
16808
一重引用符が機能しないのはなぜですか?元のシェルから一重引用符を削除した後、サブシェル$$
自体は拡張されませんか?
$ ( echo '$$' )
$$
なぜeval
動作しないのですか?eval
サブシェルによって実行されますか?元のシェルのPIDを提供するのはなぜですか?
$ ( eval echo '$$' )
16808
ありがとうございます。
ベストアンサー1
$ echo $BASHPID
37152
$ ( echo $BASHPID )
18633
マニュアルから:
BASHPID
現在のbashプロセスのプロセスIDに展開されます。これは
$$
、bashを再初期化する必要がないサブシェルと同じ場合とは異なります。
$
シェルのプロセスIDに展開されます。サブシェルでは、
()
サブシェルではなく現在のシェルのプロセスIDに展開されます。
関連: