シェルは、などの終了することがわかっているおそらく役に立たない(または部分的に役に立たない)コマンドを実行するように要求された場合、cat hugeregularfile.txt > /dev/null
そのコマンドの実行をスキップできますか (または、より安価な同等のコマンドを実行できtouch -a hugeregularfile.txt
ますか?)
より一般的には、外部で観察可能な動作が抽象マシンが評価した場合に限り、ソースコードに変換を実行できるという点で、シェルはCコンパイラに似ていますか?
編集
Nota Bene:当初提起された私の質問には、シェルがこれらの最適化を行うことが許可されているかどうか、またはそれらを行うことができる実装が存在するかどうかではなく、尋ねられました。理論は実践よりも理論に興味がありますが、どちらも大歓迎です。
cat
それを変更すると大きな違いが生じると言っても関係ありません。シェルはファイルがデバイスであることを知ることができますが、信頼できる必要はありません。
wc
、 例えば)。しかし、私の知る限り、POSIXはシェルの最適化の位置を占めていません。それともそうですか?
ksh
。彼らは言っていないと同じように、別のプロセスが、サブシェル環境はフォーク節約最適化を可能にするために。