如果要求外壳程序执行已知终止的可能无用的(或部分无用的)命令(例如)cat hugeregularfile.txt > /dev/null
,它可以跳过该命令的执行(或执行便宜的等效 命令touch -a hugeregularfile.txt
)吗?
更笼统地说,shell是否类似于C编译器,只要可以在外部观察到的行为就如同抽象机对其进行了评估一样,就可以对源代码执行任何转换?
编辑
Nota Bene:我最初提出的问题有一个标题,询问是否允许 shell 进行这些优化,而不是是否应该甚至可以执行这些优化的实现。我对理论比对实践更感兴趣,尽管都欢迎。
cat
大有不同。Shell可以知道该文件是设备,但它不一定可靠。
wc
, 例如)。但是,据我所知,POSIX在外壳优化方面不占优势。还是呢?
ksh
。就像他们没有说单独的过程,而是在子外壳环境中允许节省分叉的优化。