そうではありません。何が起こるかは、ドキュメントが言うこととまったく同じです。
exec
現在実行中のシェルをssh-agent
に置き換えるため、「古い bash」が置き換えられました。
ssh-agent
非オプションの引数 ( の値$SHELL
) があることがわかるので、子プロセスを作成し、子プロセスでexec
そのコマンドを実行します。これにより、ssh-agent
の子が新しい に置き換えられbash
ます。
ssh-agent
それ自体は、その子が終了するのを待ちます。
一方、新しいbash
端末は端末を継承しているため、コマンドに応答し始めます。
最終的には、何をしていても飽きてしまい、プロセスが終了exit
するコントロール D (ファイルの終わり) を入力するか、入力するかのいずれかになります。bash
ssh-agent
その子が終了したことに気づき、それも終了します。
元のbash
プロセスに親があった場合、その親は、その子が終了したことを通知されるようになりました。元bash
の の親が存在しなくなった場合、init
プロセス (プロセス 1) が親になります。どちらの場合でも、親は (行儀が良いと仮定して) 適切な処理を行い、ゾンビから離れないように子のステータス コードをクリーンアップします。
「置換」とは、プロセスで実行されている実行可能ファイルが置換されたことを意味することに注意してください。プロセス自体が終了し、新しいプロセスが開始されたという意味ではありません。を呼び出しexec
た後、プロセスは同じプロセスであり、同じプロセス ID と同じ親 (さらに言えば、プロセスがマークしたファイル記述子を除いて、同じ制御端末と同じオープン ファイル記述子) を持ちます。 「実行時に閉じられる」)。前の文が複雑すぎるように見える場合、最低限のポイントは「同じ親」です。