쉘이 자체 "echo" 명령을 내부적으로 구현하는 이유는 무엇입니까? [복사]

쉘이 자체 "echo" 명령을 내부적으로 구현하는 이유는 무엇입니까? [복사]

(순전히 학문적인 질문이라는 점 참고해주세요...어떠한 문제를 해결하려는 것이 아니라 단지 답이 궁금할 뿐입니다.)

ECHO(1)매뉴얼 페이지(GNU echo) 에서 :

참고: 쉘에는 일반적으로 여기에 설명된 버전을 대체하는 자체 버전의 echo가 있을 수 있습니다. 지원되는 옵션에 대한 자세한 내용은 셸 설명서를 참조하세요.

ECHO(1)매뉴얼 페이지(BSD echo) 에서 :

일부 쉘은 이 유틸리티와 유사하거나 동일한 내장 echo 명령을 제공할 수 있습니다. 특히 sh(1)에 내장된 echo는 -n 옵션을 허용하지 않습니다. 내장(1) 매뉴얼 페이지를 참조하십시오.

echo셸에서 실행하는 경우 내부 명령이 실행되지만 전체 경로는 예를 들어 /bin/echo외부 프로그램을 실행하도록 지정됩니다.

쉘 자체가 특정 명령을 구현하도록 하는 이유는 무엇입니까? 어떤 명령이 있어야합니다~ 해야 하다쉘에 의해 구현됨(예 cd: read등) 그런데 왜 echo? 너무 자주 사용되며 프로세스 설정 및 컨텍스트 전환을 피함으로써 절약된 시간이 측정 가능하기 때문입니까? 특히 역사적으로 볼 때 그렇습니다.

bash예를 들어 꼭 필요하지 않은 많은 기능이 있다는 사실을 무시하고 속도 요소가 중요하다면 왜 expr, [/ test, mkdir등과 같은 것을 rmdir셸에 넣지 않습니까? 구현 이 거의 말 그대로 함수 호출인 mkdirand 와 같은 것은 포함할 확실한 후보처럼 보입니다.rmdirlibc

답변1

속도 요인이 이유 중 하나입니다. 이는 파일 인수(예 echo: , 등) 없이 test일반적으로 사용되는 명령에 특히 의미가 있습니다 . printf따라서 파일 액세스나 파일 매개변수나 명령 자체를 읽지 않고도 작업을 완료할 수 있습니다.

다른 명령 killkill %1.

일부 셸은 간단한 셸 스타일 패턴 이름 바꾸기와 같은 기능을 추가 mv하는 데 사용되는 명령과 같은 다른 "상위 수준" 명령도 구현합니다 .zsh

관련 정보