리눅스와 모든 유닉스 시스템에서 터미널 에뮬레이터는 기본적으로 대화식의 비 로그인 쉘을 실행합니다. 이것은 bash의 경우 시작된 쉘이 다음을 수행함을 의미합니다.
로그인 쉘이 아닌 대화식 쉘이 시작되면 bash는
/etc/bash.bashrc
및~/.bashrc
이 파일이 존재하는 경우 및 에서 명령을 읽고 실행 합니다. 이--norc
옵션 을 사용하여 금지 할 수 있습니다 .
--rcfile
파일 옵션을 읽고 대신 파일에서 명령을 실행하는 bash는 강제로/etc/bash.bashrc
와~/.bashrc
.
그리고 로그인 쉘의 경우 :
bash가 대화식 로그인 쉘 또는
--login
옵션이 있는 비 대화식 쉘로 호출되면/etc/profile
파일이 존재하는 경우 먼저 파일에서 명령을 읽고 실행 합니다. 해당 파일을 읽은 후, 그것은을 찾습니다~/.bash_profile
,~/.bash_login
그리고~/.profile
, 순서대로, 그리고 읽고 존재하고 읽을 수있는 첫 번째에서 실행하는 명령을.
--noprofile
쉘이 동작을 억제하기 시작할 때 옵션을 사용할 수있다.
OSX에, 그러나, 기본 쉘 (bash는 인) 기본 터미널 (Terminal.app) 실제로 소스에서 시작 ~/.bash_profile
또는 ~.profile
등 즉,이 로그인 쉘과 같은 역할을합니다.
주요 질문 : 왜 기본 대화식 쉘이 OSX에서 로그인 쉘입니까? OSX가 왜 이것을 선택 했습니까? 즉, 변경 사항을 언급하는 쉘 기반 항목에 대한 모든 지침 / 자습은 ~/.bashrc
OSX 에서 실패하거나 그 반대의 경우도 마찬가지입니다 ~/.profile
. 그럼에도 불구하고 애플에서 많은 고발이 제기 될 수 있지만, 무능하거나 바보 같은 개발자를 고용하는 것은 그들 중 하나가 아닙니다. 아마도 이것에 대한 충분한 이유가 있었을 것입니다. 왜 그렇습니까?
하위 질문 : Terminal.app은 실제로 대화 형 로그인 셸을 실행합니까, 아니면 bash의 동작을 변경 했습니까? 이것은 Terminal.app에만 해당됩니까, 아니면 터미널 에뮬레이터와 무관합니까?