(순전히 학문적인 질문이라는 점 참고해주세요...어떠한 문제를 해결하려는 것이 아니라 단지 답이 궁금할 뿐입니다.)
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
셸에 넣지 않습니까? 구현 이 거의 말 그대로 함수 호출인 mkdir
and 와 같은 것은 포함할 확실한 후보처럼 보입니다.rmdir
libc
답변1
속도 요인이 이유 중 하나입니다. 이는 파일 인수(예 echo
: , 등) 없이 test
일반적으로 사용되는 명령에 특히 의미가 있습니다 . printf
따라서 파일 액세스나 파일 매개변수나 명령 자체를 읽지 않고도 작업을 완료할 수 있습니다.
다른 명령 kill
도 kill %1
.
일부 셸은 간단한 셸 스타일 패턴 이름 바꾸기와 같은 기능을 추가 mv
하는 데 사용되는 명령과 같은 다른 "상위 수준" 명령도 구현합니다 .zsh