Si se le pide a un shell que ejecute un comando probablemente inútil ( o parcialmente inútil ) que se sabe que termina, como cat hugeregularfile.txt > /dev/null
, ¿puede omitir la ejecución de ese comando ( o ejecutar un equivalente más barato, por ejemplo touch -a hugeregularfile.txt
)?
En términos más generales, ¿es el shell similar a los compiladores de C en el sentido de que puede realizar cualquier transformación en el código fuente, siempre que el comportamiento observable externamente sea como si la máquina abstracta lo evaluara?
EDITAR
Nota Bene: Mi pregunta, como se planteó originalmente, tenía un título que preguntaba si el shell puede hacer estas optimizaciones, no si debería o incluso si existen implementaciones que puedan hacerlas. Me interesa más la teoría que la práctica, aunque ambas son bienvenidas.
cat
ting hace una gran diferencia. El shell puede llegar a saber que el archivo es un dispositivo, pero no necesita ser confiable.
wc
, por ejemplo). Pero, que yo sepa, POSIX no toma posición en la optimización de shell; O lo hace?
ksh
. Como si no dijeran un proceso separado sino un entorno de subshell para permitir optimizaciones de ahorro de fork.