bash 인쇄가 종료되지 않았음에도 종료되는 이유는 무엇입니까? 이것은 버그입니까?

bash 인쇄가 종료되지 않았음에도 종료되는 이유는 무엇입니까? 이것은 버그입니까?

0개 또는 1개의 숫자 인수를 사용하여 종료합니다. 예를 들어 exit" exit 42exit"를 인쇄하고 셸을 종료합니다.

exit helloexit는 오류 메시지 인쇄, "exit" 인쇄 및 셸 종료, 값 255 반환 과 같은 잘못된 인수를 사용합니다 .

예를 들어 파이프의 종료는 exit | cat | exit"exit"를 인쇄하지 않으며 명령의 반환 값은 사용 중인 bash 버전에 따라 다릅니다. 이것은 쉘을 종료하지 않습니다.

exit 1 2 3exit는 오류 메시지 인쇄, "exit" 인쇄하지만 셸을 종료하지 않는 등 여러 매개변수를 사용합니다 .

이는 때때로 bash가 실제로 종료하지 않고 "exit"를 인쇄한다는 것을 의미하며 이는 매우 혼란스러울 수 있습니다. 이것은 버그입니까, 아니면 어떤 이유에서든 의미가 있습니까?

답변1

Bash는 비로그인 쉘을 종료하려고 할 때 "exit"를 인쇄하고, 로그인 쉘을 종료하려고 할 때 "logout"(또는 해당 로케일의 해당 언어)을 인쇄합니다. 따라서 이 메시지를 인쇄하는 것은 사용자 관점에서 두 경우를 정확히 구별하기 위한 것이라고 생각합니다(원격 시스템의 ssh 세션에서 로그아웃하고 로컬 시스템으로 돌아갈 때 시스템에서 문자 메시지가 표시되지 않으면 이러한 정보가 도움이 될 수 있습니다). 호스트 이름을 포함합니다).

exit 1 2 3bash가 "exit"를 인쇄하지만 종료되지 않는(대신 오류 메시지를 인쇄하는) 상황( )뒤쪽에나는 "exit"를 인쇄하는 것은 디자인 오류로 간주되어야 한다고 생각합니다. exit인수는 구문 분석되어야 하며 "종료" 또는 "로그아웃"이 인쇄되기 전에 선택적 오류 메시지가 인쇄되어야 합니다. 후자는 인수 확인이 성공한 경우에만 인쇄되어야 합니다. 이것이 혼란스럽다고 생각되면 버그를 신고할 수 있습니다.

관련 정보