찾아보니 .bash_profile
,,,..bashrc
.bash_login
.profile
그 사이의 읽기 순서는 무엇입니까?
답변1
기본적으로 로그인 쉘이라면 /etc/profile
을 얻습니다 .bash_profile
. 로그인 쉘은 아니지만 터미널에 있으면 을 얻 /etc/bash.bashrc
습니다 .bashrc
.
그러나 실제로는 훨씬 더 복잡합니다.
맨 페이지를 읽는 방식은 다음과 같습니다.
if bash_mode; then
if login_shell; then
if test -e /etc/profile; then source /etc/profile; fi
if test -e .bash_profile; then source .bash_profile
elif test -e .bash_login; then source .bash_login
elif test -e .profile; then source .profile; fi
elif interactive_shell || remote_shell; then
if test -e /etc/bash.bashrc; then source /etc/bash.bashrc
if test -e .bashrc; then source .bashrc; fi
elif test -n "$BASH_ENV"; then
source "$BASH_ENV"
fi
elif sh_mode; then
if login_shell; then
if test -e /etc/profile; then source /etc/profile; fi
if test -e .profile; then source .profile; fi
elif interactive_shell; then
if test -n "$ENV"; then
source "$ENV"
fi
fi
fi
-bash
쉘이 (빼기 기호 참고) 또는 옵션과 함께 실행될 때마다 -l
로그인 쉘입니다. 이는 일반적 으로 명령(Linux 가상 콘솔이 수행함)을 사용하거나, ssh를 통해 로그인하거나 login
, 터미널 에뮬레이터에 "login shell" 옵션이 활성화되어 있을 때 발생합니다.
표준 입력이 터미널이거나 -i
bash가 이 옵션으로 시작되면 대화형 쉘입니다. 쉘이 로그인 쉘이기도 하면 bash는 쉘이 대화형인지 여부를 확인하지 않습니다. 따라서 .bash_profile
일반적으로 소스 코드가 포함되므로 .bashrc
대화형 쉘과 로그인 쉘 간에 동일한 설정을 공유할 수 있습니다.