パラメータなしでexecは何をしますか?

パラメータなしでexecは何をしますか?

execパラメータなしで成功を返し、明らかに何もしません。なぜ?

答え1

方法Bashのマニュアルにはこんな感じです。、構文は次execのとおりです。

exec [-cl] [-a name] [command [arguments]]

そして

もし注文する提供されたら、新しいプロセスを作成せずにシェルを交換します。

しかし、

そうでない場合注文する指定すると、リダイレクトを使用して現在のシェル環境に影響を与えることができます。

したがって、execコマンドラインに他の内容がない場合は、実行するコマンドもなく、適用するリダイレクトもないため、何もする必要はありません。

ただし、たとえばexec >> output.txt実際のパラメータはありませんが、execまだシェルにリダイレクトを適用します。

これはZshとPOSIXの機能に似ていますが、POSIXのテキストは読みにくくなります。

答え2

シェルの上部近くにこの行を配置すると、リダイレクトされなくなったスクリプトの出力がキャプチャされます。

LOG=bash.out.txt
exec >"$LOG" 2>&1

echo "captured into $LOG"
echo "not captured into $LOG" > otherfile.txt

関連情報