~에서배쉬 매뉴얼
대화형 로그인 셸로 호출되거나 --login을 사용하여 호출됩니다.
Bash가 대화형 로그인 셸로 사용되거나--login 옵션이 있는 비대화형 쉘, 먼저 /etc/profile 파일(파일이 존재하는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후 ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아 존재하고 읽을 수 있는 첫 번째 파일부터 명령을 읽고 실행합니다. 이 동작은 셸을 시작할 때 --noprofile 옵션을 사용하여 비활성화할 수 있습니다.
대화형 로그인 쉘이 종료되거나 비대화형 로그인 쉘이 종료 내장 명령을 실행하면 Bash는 ~/.bash_logout 파일(존재하는 경우)에서 명령을 읽고 실행합니다.
대화형 비로그인 셸로 호출됨
...
비대화형 통화
배쉬가 시작될 때비대화형으로예를 들어, 쉘 스크립트를 실행하려면 환경에서 BASH_ENV 변수를 찾아 그 값이 나타나면 확장하고, 확장된 값을 읽고 실행할 파일 이름으로 사용합니다. Bash는 다음 명령이 실행된 것처럼 동작합니다.
if [-n "$BASH_ENV"]; "$BASH_ENV";
그러나 PATH 변수의 값은 파일 이름을 검색하는 데 사용되지 않습니다.
위에서 언급했듯이 --login 옵션을 사용하여 비대화형 셸을 호출하면 Bash는 로그인 셸 시작 파일에서 명령을 읽고 실행하려고 시도합니다.
비대화형 로그인 쉘은 첫 번째 상황 또는 세 번째 상황 중 어떤 상황에 속합니까?
첫 번째 사례인 "대화형 로그인 쉘로 호출되거나 --login을 사용하여 호출됨"에는 "--login 옵션이 있는 비대화형 쉘" 시나리오가 포함되어 있으므로 다음과 같이 추론했습니다.
첫 번째 경우는 대화형이든 비대화형이든 상관없이 로그인 셸입니다.
세 번째 경우는 비대화형 비로그인 쉘입니다.
내가 맞나요?
감사해요.
답변1
아니요, 당신은 틀렸습니다. Bash는 문서화된 대로 작동합니다.
- 첫 번째 부분은 대화형 로그인 쉘뿐만 아니라 플래그로 시작되는 비대화형 쉘에도 적용됩니다
--login
. - 세 번째 부분은 비대화형 로그인 쉘을 포함한 비대화형 쉘에 적용됩니다.아니요플래그부터 시작하세요
--login
.
쉘은 --login
플래그가 없는 로그인 쉘일 수 있습니다. Linux 시스템에서 SSH를 통해 시작된 Bash 셸을 보면 /proc/$$/cmdline
다음과 같이 시작되는 것을 볼 수 있습니다 -bash
. 선행 하이픈은 로그인 셸을 시작하는 일반적인 방법이며 비대화형으로 끝나는 경우 첫 번째 부분에 포함되지 않습니다. . 그러나 어떤 이유로 사람들이 비대화형 로그인 셸을 원하는 경우 일반적으로 이를 사용하여 --login
이를 얻습니다.