.bashrc가 .bash_profile에 도움이 되는 상황이 있나요?

.bashrc가 .bash_profile에 도움이 되는 상황이 있나요?

.bashrc나는 and .bash_profile(또는 그 문제에 대해) .bash_login의 차이점을 이해하지만 bash 쉘 구성을 ~/.profile선택하는 특별한 이유가 있습니까 ?.bashrc.bash_profile

.bashrc내가 이해한 바로는 새 bash 창이 열릴 때마다 터미널 색상, 환경 변수 등과 같은 구성이 다시 로드됩니다. .bash_profile로그인 시 한 번만 로드되며, 이 정도면 충분하다고 생각합니다. 그럼 왜 .bashrc거기에 아무것도 넣나요?

제가 생각할 수 있는 유일한 이유는 구성을 로드하기 위해 시스템에서 로그아웃할 필요가 없다는 것입니다.

순전히 전통적인 이유 외에는 답을 찾을 수 없습니다.

답변1

쉘 옵션(에서shopt또는set)은 환경을 통해 상속되지 않습니다. 어느 것도 아니다별명. 예를 들어 모든 셸을 활성화하려면 failglob이를 RC 파일에 포함해야 합니다. 별칭을 내보낸 함수로 바꿀 수 있지만 이러한 옵션에 대한 해결 방법은 없습니다.

전통적이며 설명서에서 .bash_profile소스를 갖는 것이 권장됩니다..bashrc, 따라서 여기에 입력한 구성은 로그인 셸과 비논리적 셸 모두에 로드됩니다. 에만 있는 경우에는 .bash_profile실제로 사용하는 셸에 로드되지 않을 수 있습니다.

또 다른 경우는 실제 실행 코드(예: 일부 고급 코드)로 구성이 더 복잡하다는 것입니다.PROMPT_COMMAND) 모든 쉘에서 새로 초기화된 변수를 사용하려고 합니다. 이러한 변수를 전혀 내보내지 않을 수도 있고, 배열이지만 내보낼 수 없는 변수일 수도 있습니다.

마지막 경우는 명령 실행의 부작용입니다. fortune할 일 목록이 각각의 새 셸에 표시됩니다. 이것은 쉘의 동작을 설정하는 것만큼 "구성"이 아닙니다.


로그인 쉘로 호출되지 않는 보다 일반적인 경우도 있습니다 bash(세션 관리자가 다른 작업을 수행하거나 로그인 쉘이 아니기 때문에...). .bash_profile전혀 처리되지 않습니다. 그러나 이것은 당신이 걱정하는 것 이상일 수 있습니다.

답변2

정의한 함수나 별칭은 파일에서만 정의하는 경우 하위 쉘에서 사용할 수 없습니다 profile.

source명령을 사용하면 로그아웃하지 않고도 파일을 다시 로드할 수 있지만 경로가 수정된 경우 경로가 약간 손상될 수 있습니다. .별칭 자체이지만 source때로는 시스템 관리자가 다시 매핑하는 경우도 있습니다(이유는 확실하지 않음).

이는 실행 중인 셸에서 함수와 별칭을 생성하기 위해 source 명령을 실행해야 하는 이유이기도 합니다. 스크립트만 실행하면 사용 중인 셸에서 생성하는 것이 아니라 새 셸을 생성하고 해당 셸에서 생성하기 때문입니다.

관련 정보