Wenn eine Shell aufgefordert wird, einen wahrscheinlich unbrauchbaren ( oder teilweise unbrauchbaren ) Befehl auszuführen, von dem bekannt ist, dass er beendet wird, wie z. B. cat hugeregularfile.txt > /dev/null
, kann sie die Ausführung dieses Befehls überspringen ( oder eine billigere Entsprechung ausführen , z. B. touch -a hugeregularfile.txt
)?
Im Allgemeinen ähnelt die Shell C-Compilern dahingehend, dass sie den Quellcode umwandeln kann, solange das von außen beobachtbare Verhalten so ist, als ob es von der abstrakten Maschine ausgewertet würde.
BEARBEITEN
Nota Bene: Meine Frage , wie ursprünglich gestellt hatte einen Titel, der Frage , ob die Schale erlaubt diese Optimierungen zu tun, nicht , ob es sein sollte oder ob Implementierungen , die sie existieren tun können. Ich interessiere mich mehr für die Theorie als für die Praxis, obwohl beide willkommen sind.
cat
es macht einen großen Unterschied. Die Shell kann erkennen, dass die Datei ein Gerät ist, sie muss jedoch nicht zuverlässig sein.
wc
, zum Beispiel). Nach meinem besten Wissen bezieht POSIX jedoch keine Position in Bezug auf die Shell-Optimierung. Oder doch?
ksh
. Wie sie sagen, nicht separate Prozesse, sondern Subshell-Umgebungen , um gabelsparende Optimierungen zu ermöglichen.