Nếu một shell được yêu cầu thực hiện một lệnh có thể vô dụng ( hoặc vô dụng một phần ) được biết là chấm dứt, chẳng hạn như cat hugeregularfile.txt > /dev/null
, liệu nó có thể bỏ qua việc thực thi lệnh đó ( hoặc thực hiện một lệnh tương đương rẻ hơn, giả sử touch -a hugeregularfile.txt
)?
Tổng quát hơn, trình bao tương tự như trình biên dịch C ở chỗ nó có thể thực hiện bất kỳ phép chuyển đổi nào trên mã nguồn, miễn là hành vi có thể quan sát được bên ngoài là như nếu máy trừu tượng đánh giá nó?
CHỈNH SỬA
Nota Bene: Câu hỏi của tôi khi được đặt ra ban đầu có một tiêu đề hỏi liệu trình bao có được phép thực hiện các tối ưu hóa này hay không, liệu nó có nên hoặc thậm chí liệu các triển khai có thể thực hiện chúng hay không. Tôi quan tâm đến lý thuyết hơn là thực hành, mặc dù cả hai đều được chào đón.
cat
ting nó sẽ tạo ra sự khác biệt lớn. Shell có thể biết rằng tệp là một thiết bị, nhưng nó không cần phải đáng tin cậy.
wc
, ví dụ). Nhưng theo hiểu biết tốt nhất của tôi, POSIX không có vị trí tối ưu hóa vỏ; Hay không?
ksh
. Giống như họ không nói quy trình riêng biệt nhưng môi trường bán lẻ để cho phép tối ưu hóa tiết kiệm ngã ba.