추가 작업을 수행하기 위해 bash 명령을 원한다고 가정해 보겠습니다. 간단한 예로, 실행하기 전에 "123"을 에코하도록 하고 싶다고 가정해 보겠습니다.
쉬운 방법은 명령에 별칭을 추가하는 것입니다. 여전히 원본 파일이 필요하므로 를 사용하여 찾을 수 있는 정확한 경로로 이를 참조할 수 있습니다 which
. 예를 들어:
$ which rm
/bin/rm
$ echo "alias rm='echo 123 && /bin/rm'" >> .bashrc
rm
를 이용해서 조회할 수 있어서 쉬웠어요 which
.
그러나 나는 이 작업을 수행하기 위해 그것을 사용하려고 노력하고 있지만 그것을 알아낼 수 없는 것 같습니다 exit
.which
$ which exit
$ echo $?
1
이 명령에는 출력 경로가 없습니다. 실제로 which
명령이 없으면 0이 아닌 종료 코드를 반환합니다 $PATH
.
나는 이것이 함수일지도 모른다고 생각했지만 분명히 그렇지 않습니다.
$ typeset -F | grep exit
$ echo $?
1
그래서 exit
명령은 어디에도 함수나 명령으로 정의되어 있지 않지만 $PATH
, 입력하면 exit
터미널이 닫힙니다. 분명히 어딘가에 정의되어 있지만 어디에 있는지는 모르겠습니다.
이는 어디에 정의되어 있으며 어떻게 명시적으로 호출할 수 있나요?
답변1
exit
껍질이다특수 내장주문하다. 그것은세워짐쉘 인터프리터를 사용하면 쉘이 이에 대해 알고 있으며 검색할 필요 없이 직접 실행할 수 있습니다.
대부분의 쉘에서는 다음을 사용할 수 있습니다.
$ type exit
exit is a shell builtin
내장 기능이 어떻게 구현되는지 이해하려면 셸의 소스 코드를 읽어야 합니다. 여기에 소스 코드에 대한 링크가 있습니다.bash
내장 종료.
bash
, zsh
, ksh93
, mksh
, pdksh
, 사용 exit
내장 명령을 명시적으로 호출 하려면 builtin
내장 명령을 사용하십시오.
builtin exit
바라보다내장 쉘을 명시적으로 호출하는 방법은 무엇입니까?자세한 내용은.
답변2
exit
은 쉘의 명령이므로 모든 쉘 - 예를 들어 bash
또는 ksh
이 명령이 있습니다
답변3
이 명령은 exit
bash 내부에 있습니다. 이 정보를 사용하여 도움을 요청할 수 있습니다.
$ help exit
이것은 단지 exit
쉘이 알려져 있음을 보여줍니다. 그러나 그것은 무엇입니까? :
$ type -a exit
exit is a shell builtin
외부 파일이나 프로그램으로 검색되지 않으며 셸 외부에 존재하지 않습니다.
이것을 실행하십시오: LESS=+/'^ *exit \[n\]' man bash
이것을 찾으십시오:
종료 [n]은 쉘이 n 상태로 종료되도록 합니다. n이 생략되면 종료 상태는 마지막으로 실행된 명령의 상태입니다. EXIT의 트랩은 쉘이 종료되기 전에 실행됩니다.
코드에서 명시적으로 호출하려면 다음 명령을 사용하십시오.
builtin exit