Se a una shell viene chiesto di eseguire un comando probabilmente inutile ( o parzialmente inutile ) noto per essere terminato, ad esempio cat hugeregularfile.txt > /dev/null
, può saltare l'esecuzione di quel comando ( o eseguire un equivalente più economico, diciamo, touch -a hugeregularfile.txt
)?
Più in generale, la shell è simile ai compilatori C in quanto può eseguire qualsiasi trasformazione sul codice sorgente, purché il comportamento osservabile esternamente sia come se la macchina astratta lo avesse valutato?
MODIFICARE
Nota Bene: La mia domanda, come originariamente posta, aveva un titolo che chiedeva se alla shell fosse permesso fare queste ottimizzazioni, non se dovesse o anche se esistessero implementazioni che possono farle. Sono interessato alla teoria più che alla pratica, sebbene entrambi siano i benvenuti.
cat
farebbe una grande differenza. La shell può sapere che il file è un dispositivo, ma non è necessario che sia affidabile.
wc
, per esempio). Ma per quanto ne so POSIX non prende posizione sull'ottimizzazione della shell; O lo fa?
ksh
. Come se non dicessero un processo separato ma un ambiente subshell per consentire ottimizzazioni di risparmio fork.