Якщо оболонці запропоновано виконати ймовірно марну ( або частково непотрібну ) команду, відому для завершення, наприклад cat hugeregularfile.txt > /dev/null
, чи може вона пропустити виконання цієї команди ( або виконати більш дешевий еквівалент, скажімо, touch -a hugeregularfile.txt
)?
Більш загально, чи оболонка схожа на компілятори C тим, що вона може здійснювати будь-яку трансформацію вихідного коду, доки поведінка, яка спостерігається зовні, як якщо б абстрактна машина її оцінила?
EDIT
Нота Бене: У моєму запитанні, яке було задано спочатку, було вказано заголовок, який запитував, чи дозволяється оболонці робити ці оптимізації, а не чи слід, чи існують такі реалізації, які можуть їх виконати. Мене теорія цікавить більше, ніж практика, хоча обидва вітаються.
cat
тинг - це має велике значення. Оболонка може дізнатися, що файл - це пристрій, але він не повинен бути надійним.
wc
, наприклад). Але наскільки мені відомо, POSIX не займає позиції щодо оптимізації оболонок; Або це?
ksh
. Як і вони не говорять про окремий процес, а про підзарядне середовище, що дозволяє оптимізувати економію форк.