質問: ラッパースクリプトでのexecの理由 一言で言えば、次のようなラッパースクリプトの例を見てきました。#!/bin/bash myprog=sleep echo "this is the wrapper script, it will exec "$myprog"" exec "$myprog" "$@" 上記のように、彼らはexecを使用して、新しく作成されたシェルをほぼ即座に$myprogに置き換えます。 execなしで同じことを達成できます:#!/bin/bash myprog=sleep echo "this is the wrapper script, it will exec "$myprog"" "$myprog" "$@" この最後の例では、新しいbashインスタンスが開始され、次に$myprogがbashインスタンスの子プロセスとして開始されます。最初のアプローチの利点は何ですか?
回答: 重複が見つからない... freebsdハンドブック を参照してください。これには十分な理由があります。 execステートメントは、シェルプロセスを指定されたプログラムに置き換えます。 execを省略した場合、プログラムの実行中はシェルプロセスがメモリに残り、 システムリソースを不必要に消費します。 これは本質的にかなり前に(ポーターの1人によって)私に説明された理由であり、かなりよく知られています。