.bash_profile과 .bashrc가 모두 있는 이유는 무엇입니까? [복사]

.bash_profile과 .bashrc가 모두 있는 이유는 무엇입니까? [복사]

.bash_profile.bashrc전자가 일반적으로 후자를 얻고 /etc/bashrc로그인 시 이를 얻는 과 둘 다 갖는 요점은 무엇입니까 ? 모든 것을 다 넣으면 어떤 단점이 있나요?.bashrc존재하다.bash_config 파일(또는 그 반대) 하나의 로그인 스크립트만 받으시겠습니까?

답변1

.bashrc비로그인 쉘에서만 실행되고, 로그인 .bash_profile쉘에서만 실행됩니다.

.bashrc여기에는 일반적으로 별칭, 함수 등과 같이 열려는 모든 셸에서 설정하려는 항목이 포함되어야 합니다. 이는 셸별 세션 항목이며 환경에서 상속되지 않습니다.

.bash_profilePATH 및 기타 환경 변수, 시작 프로그램 등과 같이 로그인 시에만 정의해야 하는 항목을 포함해야 합니다. 열려는 모든 셸이 아니라 한 번만 필요합니다. 대부분의 경우 .bashrc로그인 셸에도 뭔가가 필요합니다 . 그렇기 때문에 .bash_profile소스도 있지만 일반적으로 소스는 없습니다..bashrc.bashrc.bash_profile

/etc/bashrc/etc/profile시스템 관리자나 패키지 관리자가 지정한 시스템 전체 설정 입니다 . 이전의 /etc/profile모든 로그인 쉘에서 자동으로 획득됩니다 ~/.bash_profile. 소스가 없으므로 /etc/bashrc필요할 때 소스가 필요합니다.~/.bashrc

이제 이 두 파일을 하나의 파일로 병합하고 다른 파일을 첫 번째 파일에 연결할 수 있습니다. 그러나 PATH 및 기타 변수가 상대적으로 정의되지 않았는지 확인해야 합니다(예: PATH=$HOME/bin:$PATH). 그렇지 않으면 계속해서 불필요하게 커집니다. 또한, 반복되는 시동 절차에 주의해야 합니다. 둘을 분리하는 것이 더 쉽습니다.

Bash 매뉴얼 페이지의 관련 부분:

bash가 --login 옵션을 사용하여 대화형 로그인 셸 또는 비대화형 셸로 호출되면 먼저 /etc/profile 파일(파일이 있는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후 ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아 존재하고 읽을 수 있는 첫 번째 파일부터 명령을 읽고 실행합니다. 이 동작은 셸을 시작할 때 --noprofile 옵션을 사용하여 비활성화할 수 있습니다.

로그인 쉘이 종료되면 bash는 ~/.bash_logout 파일(존재하는 경우)에서 명령을 읽고 실행합니다.

로그인 쉘이 아닌 대화형 쉘을 시작할 때 bash는 파일이 존재하는 경우 ~/.bashrc에서 명령을 읽고 실행합니다. --norc 옵션을 사용하여 이를 비활성화할 수 있습니다. --rcfile file 옵션은 bash가 ~/.bashrc 대신 파일에서 명령을 읽고 실행하도록 강제합니다.

관련 정보