로그인 쉘과 비로그인 쉘 사이에서 읽혀지는 conf 파일은 무엇입니까?

로그인 쉘과 비로그인 쉘 사이에서 읽혀지는 conf 파일은 무엇입니까?

찾아보니 .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" 옵션이 활성화되어 있을 때 발생합니다.

표준 입력이 터미널이거나 -ibash가 이 옵션으로 시작되면 대화형 쉘입니다. 쉘이 로그인 쉘이기도 하면 bash는 쉘이 대화형인지 여부를 확인하지 않습니다. 따라서 .bash_profile일반적으로 소스 코드가 포함되므로 .bashrc대화형 쉘과 로그인 쉘 간에 동일한 설정을 공유할 수 있습니다.

관련 정보