Jeśli powłoka zostanie poproszona o wykonanie prawdopodobnie bezużytecznej ( lub częściowo bezużytecznej ) komendy, o której wiadomo, że kończy działanie, na przykład cat hugeregularfile.txt > /dev/null
, czy może pominąć wykonanie tej komendy ( lub wykonać tańszy odpowiednik, powiedzmy, touch -a hugeregularfile.txt
)?
Mówiąc bardziej ogólnie, czy powłoka jest podobna do kompilatorów C pod tym względem, że może wykonywać dowolną transformację w kodzie źródłowym, o ile obserwowane z zewnątrz zachowanie jest tak, jakby maszyna abstrakcyjna go oceniała?
EDYTOWAĆ
Nota Bene: Moje pierwotnie postawione pytanie miało tytuł, w którym zapytano, czy powłoka może wykonywać te optymalizacje, a nie to, czy powinna, a nawet czy istnieją implementacje, które mogą je wykonać. Teoria interesuje mnie bardziej niż praktyka, chociaż obie są mile widziane.
cat
ting robi dużą różnicę. Powłoka może dowiedzieć się, że plik jest urządzeniem, ale nie musi być niezawodny.
wc
, na przykład). Ale według mojej najlepszej wiedzy POSIX nie zajmuje stanowiska w sprawie optymalizacji powłoki; A może to?
ksh
. Jakby nie mówili o oddzielnym procesie, ale o środowisku podpowłoki, aby umożliwić optymalizację oszczędzania widelca.