나는 기본적으로 모든 설정을 .bashrc에 넣고 zsh를 사용할 때 모든 설정을 .zshrc에 넣습니다.
Rust 설치 프로그램이 방금 .profile을 수정하여 내 PATH에 새 설치를 추가했다는 알림을 보냈습니다.
언제 일이 일어나야 합니까 ~/.profile
?
이것은 내가 어떤 셸을 사용하고 있는지 모르기 때문인가요, 아니면 모든 일반 설정이 .profile에 있어야 합니까?
답변1
.profile
모든 로그인 쉘에서 읽고 .xxxrc
모든 대화형 쉘에서 읽습니다 .profile
.
추가하려는 내용에 따라 결정해야 합니다.
좋은 아이디어는 내보낸 환경 변수를 설정하여 서브셸에 전파되는 모든 항목을 .profile에 넣는 것입니다.
전파되지 않는 것은 .bashrc 또는 쉘이 찾는 모든 것에 있어야 합니다. 예를 들어 별칭 및 함수 정의가 있습니다.
답변2
Bash에는 실행할 스크립트와 시기에 대한 상당히 복잡한 논리가 있습니다.
그러나 주로 다음과 같이 요약됩니다.
- 귀하의 설정이상위 프로세스에서 하위 프로세스로 상속(환경 변수, s)는 일반적 으로
ulimit
로그인당 한 번만 설정하면 되므로 ..profile
.bashrc
- 둘 다에 대한 설정이 있는 경우유전학그리고첨가물
PATH
(예를 들어 And wasteful 과 같은 구문을 사용하는 기존 가치에 무언가를PATH=$PATH:/some/directory
추가하는 것 입니다..bashrc
예를 들어,PATH=$PATH:/some/directory
에 설정하면.bashrc
기본 셸에서 제대로 작동합니다. 그러나 편집기를 시작한 다음 셸 이스케이프 기능을 사용하면 PATH에 이제 비슷한 값이 있음을 알 수 있습니다...:/some/directory:/some/directory
. 각 하위 쉘은 디렉터리를 PATH에 다시 추가합니다. 상속 가능한 추가 설정은 일반적으로.profile
. - 귀하의 설정이유전되지 않음셸 별칭이나 함수와 같은 일반 프로세스 사이에서는 이를 에서 정의해야 합니다
.bashrc
. 에서 정의하면.profile
다양한 응용 프로그램에서 셸 이스케이프 기능을 사용하여 실행된 셸에서는 사용할 수 없다는 것을 알 수 있습니다. (또한 배포판의 표준 또는 기본값이 이미 이 기능을 제공하지 않는 한 세션의 기본 로그인 셸도 이러한 정의를 얻을 수 있도록.bashrc
소스를 가져오기 위해 명령 끝에 명령을 추가 해야 할 수도 있음을 의미합니다 .).profile
/etc/profile
.profile
그래픽 사용자 인터페이스를 사용하면 또 다른 수준의 복잡성이 추가됩니다. GUI 세션은 일반적으로 .profile
로그인 시 또는 이에 상응하는 세션을 가져오므로(해당 세션 시작 스크립트가 로그인 셸로 실행되므로) 상속 가능한 모든 설정은 일반적으로 데스크톱 환경에 의해 상속되며, 상속 가능한 모든 설정도 데스크탑 환경에 상속됩니다. 데스크탑 아이콘이나 메뉴를 사용하여 실행되는 애플리케이션.
X11 GUI 세션의 모든 터미널 창은 다음 두 가지 방법 중 하나로 설정할 수 있습니다.
- 완전히 독립적인 터미널 세션: 각 터미널 창은 독립적인 로그인 세션으로 처리되며 환경은 터미널 에뮬레이터의 in-process 셸에 대한 일부 기본 시스템 전체 기본값을 기반으로 구축됩니다. 이 경우 각각의 새 터미널 창은 로그인 셸로 실행되므로
.profile
열 때 동등한 작업을 수행합니다. - 각 터미널 창은 기본 GUI 로그인 세션의 일부로 간주됩니다. 이 경우 터미널 창 내부의 셸은 비로그인 셸로 시작되며 실행되거나
.bashrc
이에 상응하는 셸만 실행됩니다. 상속 가능한 설정은 데스크탑 환경/창 관리자 프로세스를 통해 기본 GUI 로그인 세션에서 상속됩니다.