이 질문의 목적은 특정 컴퓨팅 문제를 해결하지 않고 호기심에 답하는 것입니다. POSIX 필수 유틸리티가 쉘 구현에 일반적으로 내장되어 있지 않은 이유는 무엇입니까?
예를 들어, 기본적으로 작은 텍스트 파일을 읽고 형식이 올바른지 확인하는 스크립트가 있지만 상당한 양의 문자열 조작으로 인해 내 컴퓨터에서 실행하는 데 27 초가 걸립니다. 이 문자열 조작은 다양한 유틸리티를 호출하여 수천 개의 새로운 프로세스를 생성하므로 속도가 느려집니다. 나는 유틸리티의 일부 즉, 내장 된 경우 꽤 확신 grep
, sed
, cut
, tr
,과 expr
, 다음 스크립트가 두 번째로 실행됩니다 이하 (C에서 내 경험을 바탕으로).
이러한 유틸리티를 빌드하면 셸 스크립트의 솔루션이 허용 가능한 성능을 갖는지 여부를 차별화하는 많은 상황이있는 것 같습니다.
분명히, 이러한 유틸리티를 내장하지 않기로 선택한 이유가 있습니다. 시스템 레벨에서 하나의 유틸리티 버전을 사용하면 여러 쉘에서 해당 유틸리티의 여러 가지 버전이 사용되지 않는 것을 피할 수 있습니다. 정말 많은 새로운 프로세스를 생성하는 오버 헤드를 유지 해야하는 다른 많은 이유를 생각할 수 없으며 POSIX는 유틸리티에 대해 충분히 정의하여 각 POSIX 인 한 다른 구현을 갖는 것이 큰 문제가 아닌 것처럼 보입니다. 준수합니다. 최소한 많은 프로세스를 갖는 비 효율성만큼 큰 문제는 아닙니다.
printf
등)이 충분히 유용한 것으로 간주 될 때 쉘에 통합되었습니다.