Mac OS X에서 ~ / .bashrc가 아닌 이유는 무엇입니까? [복제]


95

이 질문에는 이미 답변이 있습니다.

나는 많은 사람들이 왜 이런 명령이 비슷한 지 알아 냈습니다.

Put X to your ~/.bashrc and you can do Y

작동하지 않습니다.

Mac OS X의 bash 시작 파일 (또는 Mac의 Bash 자체)은 ~ / .bashrc 파일을 로그인 쉘 또는 Mac OS X의 터미널 응용 프로그램과 같은 창 시스템에서 생성 된 쉘에서 소스하지 않습니다.

Bash가있는 다른 모든 유닉스 계열 시스템이 이전 에이 작업을 수행했을 때 왜 이것이됩니까?

추신:

시작 파일에 대해 Bash 자체가 말한 것을 발견했습니다 (유용 할 수 있음).

Bash가 대화식 로그인 쉘 또는 --login 옵션을 사용하는 비 대화식 쉘로 호출되면 파일이 존재하는 경우 먼저 / etc / profile 파일에서 명령을 읽고 실행합니다. 해당 파일을 읽은 후 ~ / .bash_profile, ~ / .bash_login 및 ~ / .profile을 순서대로 찾고 존재하고 읽을 수있는 첫 번째 파일에서 명령을 읽고 실행합니다. 이 동작을 막기 위해 쉘을 시작할 때 --noprofile 옵션을 사용할 수 있습니다.

출처 : http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files


또한 ~/.bash_profile실행 된 것으로 나타 났지만 그렇지 않습니다 ~/.bashrc. 이상하다.
igaurav

답변:


90

OSX에서 터미널은 기본적으로 로그인 세션을 시작하므로 .bash_profile 등을 읽습니다 (사용자 이름 및 비밀번호를 요청하는 GUI 로그인 프로세스는 쉘 스크립트를 사용하지 않으며 쉘을 시작하지 않음).

다른 Unices에서 xterm은 기본적으로 비 로그인 쉘을 실행하므로 로그인 세션에서 비밀번호 등을 제공하는 스크립트로 .bashrc를 읽고 로그인 세션을 호출하고 모든 터미널은 이것의 하위 프로세스이며 쉘 환경을 상속합니다.

언급 한 GNU 문서에서

대화 형 비 로그인 셸로 호출

로그인 쉘이 아닌 대화식 쉘이 시작될 때 Bash는 ~ / .bashrc에서 해당 파일이있는 경우 명령을 읽고 실행합니다. --norc 옵션을 사용하여이를 방지 할 수 있습니다. --rcfile 파일 옵션은 Bash가 ~ / .bashrc 대신 파일에서 명령을 읽고 실행하도록합니다.

따라서 일반적으로 ~ / .bash_profile에는 다음 줄이 포함됩니다.

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 

로그인 별 초기화 후 (또는 이전)


7
Unicies = 유닉스?
Paul Brewczynski

8
그럼 유닉스 나는 의미 - 볼 - 그래서 복수 형태 제거제 학교에서 라틴어를 leant en.wikipedia.org/wiki/Unix을
user151019

8
... 그리고 제 3 형태 "Unixen"(내가 선호하지만 유닉스)
earcam

7
그리고 네 번째 "유니콘"
Tink

8
null 형식을 잊지 말자. "
eunuchs

19

bash단지 읽기 .bashrc에 대한 비 로그인 쉘 :

로그인 쉘이 아닌 대화식 쉘이 시작될 때 bash는 ~ / .bashrc에서 해당 파일이있는 경우 명령을 읽고 실행합니다. --norc 옵션을 사용하여이를 방지 할 수 있습니다. --rcfile 파일 옵션은 bash가 ~ / .bashrc 대신 파일에서 명령을 읽고 실행하도록합니다.

터미널이 bash로그인 쉘로 시작함에 따라 ( 인스턴스가로 실행되는지 w확인하기 위해 bash실행 -bash) .bashrc자동으로 읽히지 않습니다.


요점은 Mac OS X의 Termina 앱은 항상 bash의 "로그인"인스턴스를 생성한다는 것입니다. 왜 ? 당신이 정말로 로그인하지 않으면. (GUI에서 이전에 로그인했습니다)
Paul Brewczynski

왜 다른 유닉스 시스템이 ~ / .bashrc를 읽습니까?
Paul Brewczynski

3
Apple이 내린 디자인 결정을 설명 할 수있는 사람은 없습니다. 나는 쉽게 양측을 논쟁 할 수 있지만 이것도 도움이되지 않습니다. 그래서 아마도 최선의 선택 일 것입니다
nohillside

이 로그인되지 않도록 그럼 당신은 당신이 다음 X를 실행하는 쉘을 실행하여 시작 유닉스 기반의 X11에 로그인, 그래서 당신과 쉘을 처음 실행
user151019

@PaulBrewczynski Well Linux는 .bash_profile에서 .bashrc로 전화를 겁니다.
Paul Stelian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.