Если оболочку просят выполнить, вероятно, бесполезную ( или частично бесполезную ) команду, о которой известно, что она завершается, например cat hugeregularfile.txt > /dev/null
, может ли она пропустить выполнение этой команды ( или выполнить, скажем, более дешевый эквивалент touch -a hugeregularfile.txt
)?
В более общем смысле, похожа ли оболочка на компиляторы C в том, что она может выполнять любое преобразование исходного кода, если наблюдаемое извне поведение выглядит так, как если бы его анализировала абстрактная машина?
РЕДАКТИРОВАТЬ
Nota Bene: У моего вопроса, который был задан изначально, был заголовок, в котором спрашивалось, разрешена ли оболочка для выполнения этих оптимизаций, а не должна ли она или даже существуют ли реализации, которые могут их выполнять. Я интересуюсь теорией больше, чем практикой, хотя оба приветствуются.
cat
он имеет большое значение. Оболочка может узнать, что файл является устройством, но он не обязательно должен быть надежным.
wc
, например). Но, насколько мне известно, POSIX не занимает позицию по оптимизации оболочки; Или это?
ksh
. Как будто они говорят не отдельный процесс, а среду оболочки, позволяющую оптимизировать сохранение ветвлений.