Si un shell est invité à exécuter une commande probablement inutile ( ou partiellement inutile ) connue pour se terminer, comme cat hugeregularfile.txt > /dev/null
, peut-il ignorer l'exécution de cette commande ( ou exécuter un équivalent moins cher, par exemple touch -a hugeregularfile.txt
)?
Plus généralement, le shell est-il similaire aux compilateurs C en ce sens qu'il peut effectuer n'importe quelle transformation sur le code source, tant que le comportement observable de l'extérieur est comme si la machine abstraite l'évaluait?
MODIFIER
Nota Bene: Ma question telle que posée à l'origine avait un titre qui demandait si le shell est autorisé à faire ces optimisations, pas s'il le devrait ou même si des implémentations qui peuvent les faire existent. Je m'intéresse plus à la théorie qu'à la pratique, bien que les deux soient les bienvenus.
cat
ting fait une grande différence. Le shell peut apprendre que le fichier est un périphérique, mais il n'est pas nécessaire qu'il soit fiable.
wc
, par exemple). Mais à ma connaissance, POSIX ne prend pas position sur l'optimisation du shell; Ou alors?
ksh
. Comme ils ne disent pas un processus séparé mais un environnement de sous-shell pour permettre des optimisations d'économie de fourche.