"출구"는 어디에 정의되어 있나요?

"출구"는 어디에 정의되어 있나요?

추가 작업을 수행하기 위해 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

이 명령은 exitbash 내부에 있습니다. 이 정보를 사용하여 도움을 요청할 수 있습니다.

$ help exit

이것은 단지 exit쉘이 알려져 있음을 보여줍니다. 그러나 그것은 무엇입니까? :

$ type -a exit
exit is a shell builtin

외부 파일이나 프로그램으로 검색되지 않으며 셸 외부에 존재하지 않습니다.

이것을 실행하십시오: LESS=+/'^ *exit \[n\]' man bash이것을 찾으십시오:

종료 [n]은 쉘이 n 상태로 종료되도록 합니다. n이 생략되면 종료 상태는 마지막으로 실행된 명령의 상태입니다. EXIT의 트랩은 쉘이 종료되기 전에 실행됩니다.

POSIX 내장 함수로 정의됨.

코드에서 명시적으로 호출하려면 다음 명령을 사용하십시오.

builtin exit

관련 정보