exit
이 명령이 Unix 터미널에서 어떻게 작동하는지 설명할 수 있는 사람이 있습니까 ?
검색했는데 man exit
아무런 which exit
도움도 없이 다음과 같은 문제를 발견했습니다.
새로운 Red Hat 시스템에 Anaconda 및 PyCharm용 추가 기능 패키지를 설치한 후 exit
터미널 세션을 종료하려고 호출할 때마다 일련의 오류가 발생하고 터미널이 예상대로 종료되는 것을 발견했습니다. 이러한 오류는 내가 거는 호출이 exit
호출을 트리거하여 오류를 발생시키고 있음 rm ~/anaconda3/.../
을 나타내는 것 같습니다. rm ~/PyCharm/....
모든 디렉토리는 또한 이러한 프로그램(예: numpy)을 위해 다운로드한 패키지의 위치인 것으로 나타납니다. 아래를 참조하세요.
$ exit
rm: cannot remove ‘~/anaconda3/lib/python3.5/site-packages/numpy/core’: Is a directory
...
...
해결하다
내 ~/.bash_logout
파일에 한 줄이 있습니다
find ~ -xdev ( -name *~ -o -name .*~ -o -name core ) -exec \rm '{}' \;
이 줄을 주석 처리하면 오류 메시지가 중지됩니다. 임시파일을 모두 검색해서 삭제하는 것 같습니다. 그러나 "core"라는 단어가 포함된 디렉토리를 찾아 삭제하려고 시도할 수도 있습니다. 이것이 시스템 기본값입니다.
답변1
man bash
exit [n] [...] A trap on EXIT is executed before the shell terminates.
이러한 트랩은 종료 시 tmp파일을 정리하는 데 자주 사용됩니다. https://stackoverflow.com/questions/687014/removing-created-temp-files-in-unexpected-bash-exit
다음과 같이 종료 트랩을 정의하십시오(새 쉘에서 더 나은 테스트를 위해).
$ bash
$ trap "rm filetodelete" EXIT
정의된 EXIT 트랩을 표시합니다.
$ trap -p EXIT
trap -- 'rm filetodelete' EXIT
시험:
$ exit
rm: cannot remove ‘filetodelete’: No such file or directory
exit
암시적으로 "호출"하는 것도 가능하다는 점에 유의하세요 . 따라서 exit
트랩을 실행할 수도 있습니다 kill -HUP $$
.
답변2
일반적으로 이 옵션을 수동으로 구성하면 셸을 종료할 때만 실행이 표시됩니다. 하지만 설치한 패키지 중 하나에 bash 종료 쉘 스크립트가 함께 제공될 수도 있습니다.
확인하다;
~/.bash_logout
아마도 거기에서 이상한 스크립트 호출을 발견하게 될 것입니다.
답변3
이 exit
명령은 특수 명령입니다내장셸의 명령입니다. 쉘 프로세스를 종료해야 하기 때문에 내장되어 있어야 합니다.
이는 쉘을 종료하고 종료 상태(있는 경우) 또는 마지막 명령의 종료 상태를 제공합니다.
종료 시 쉘은 EXIT
트랩(있는 경우)을 실행합니다. 현재 설정의 출력을 봅니다 trap
(Bourne과 같은 셸에서).
많은 쉘의 경우 쉘이 로그인 쉘로 호출되면(일부 시스템/사용자는 로그인 쉘을 시작하도록 터미널 에뮬레이터를 구성함) 특수 파일(예: )에 저장된 코드 ~/.logout
와 쉘에 해당하는 코드 ~/.zlogout
도 실행합니다.~/.bash_logout
/etc
이러한 명령이 실행되는 위치를 이해하기 위해 set -x
호출하기 전에 이 작업을 수행 할 수 있습니다 .exit
답변4
exit
이는 bash의 "내장" 명령이므로 man exit
도움이 되지 않는 것이 당연합니다.
적절한 문서는 man bash
매뉴얼 페이지나 bash() 내장 명령을 사용하여 얻을 수 있습니다.help
help exit
$ help exit
exit: exit [n]
Exit the shell.
Exits the shell with a status of N. If N is omitted, the exit status
is that of the last command executed.
$
만약 너라면진짜알고 싶어요어떻게작동합니다. 소스를 살펴보세요.http://git.savannah.gnu.org/cgit/bash.git/tree/buildins/exit.def?h=bash-4.4