Bash組み込みexecのユースケース/実際の例

Bash組み込みexecのユースケース/実際の例

Bash の exec 組み込みドキュメントでは、次の点を考慮してください。

execは新しいプロセスを作成せずにシェルを置き換えます。

使用事例/実際の事例を提供してください。私はこれが何を意味するのかわかりません。

Googleで調べたものはI/O リダイレクト。もっとよく説明できますか?

ベストアンサー1

execシェルスクリプトでは、主に他のバイナリを実行するためのラッパーとして使用されることがよくあります。たとえば、

#!/bin/sh

if stuff;
    EXTRA_OPTIONS="-x -y -z"
else
    EXTRA_OPTIONS="-a foo"
fi

exec /usr/local/bin/the.real.binary $EXTRA_OPTIONS "$@"

これにより、ラッパーの実行が完了した後に「実際の」バイナリが引き継がれ、プロセステーブルで同じスロットを一時的に占有していたラッパースクリプトの痕跡が残りなくなります。 「本当の」バイナリは、それを始めたものの直系の子孫であり、孫ではありません。

あなたの質問でI / Oリダイレクトについても言及しました。これはまったく異なるユースケースであり、execシェルを別のプロセスに置き換えることとは関係ありません。exec次のようなパラメータがない場合:

exec 3>>/tmp/logfile

これにより、コマンドラインからのI / Oリダイレクトが現在のシェルプロセスに適用されますが、現在のシェルプロセスは引き続き実行され、スクリプトの次のコマンドに進みます。

おすすめ記事