Mac OS X은 $ PATH의 값을 어떻게 설정합니까? 경로를 얻는 위치를 완전히 설명하는 설명서가

$ PATH를 설정하는 방법에 대한 기본적인 이해가 있지만 Mac OS가 $ PATH에 추가되는 모든 경로를 얻는 위치를 완전히 설명하는 설명서가 있습니까? 내가 좋아하는 것들을 알고 있어요 /etc/profile, /etc/paths그리고 /etc/profile.d, 결국 $ PATH의 값에 영향을주는 다른 스크립트가있다? 또한 비 로그인과 로그인 셸 ( .bashrc, .bash_profile) 사이에는 익숙하지 않지만 기본적인 차이점을 알고 있습니다.



답변

일반적으로 PATH는 쉘에 의해 설정됩니다. Bash의 경우 모든 것이 매뉴얼에 설명되어 있습니다 . 부품 man bash을 열고 건너 뛸 수도 있습니다 INVOCATION.

대화식 로그인 쉘 또는 –login으로 호출

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

대화 형 비 로그인 셸로 호출

로그인 쉘이 아닌 대화식 쉘이 시작되면 Bash는 ~ / .bashrc에서 해당 파일이 존재하는 경우 명령을 읽고 실행합니다. 또한 OS X path_helper에는 내용을 읽고 /etc/paths.d경로에 추가하는 내용이 있습니다.

여기서 핵심은 OS X에서 터미널이 기본적으로 로그인 쉘을 여는 반면 Linux에서는 쉘이 일반적으로 비 로그인 쉘로 시작된다는 것입니다. Josh Staiger는 로그인 대 비 로그인 쉘에 대한 좋은 설명을 제공 합니다.

따라서 경로를 설정할 수있는 기본적으로이 두 세 가지만 있습니다.

  • /etc/profile(이 호출 path_helper)
  • /etc/paths/etc/paths.d(호출 path_helper)
  • 쉘 구성 파일 ( .bash_profile)

답변

의 경로 /etc/paths와는 /etc/paths.d/*일반적으로에 추가 PATHpath_helper . path_helper에서 /etc/profile실행되므로 bash가 대화 형 로그인 쉘로 호출 될 때 실행되지만 bash가 비 로그인 쉘 또는 비 대화식 쉘로 호출 된 경우에는 실행되지 않습니다.

/etc/paths포함 /usr/local/bin기본적으로 마지막에, 그리고 /etc/paths.d/기본적으로 비어 있습니다.

터미널 및 iTerm 2는 기본적으로 새 쉘을 로그인 쉘로 열고 컴퓨터에 ssh 할 때 열린 쉘도 로그인 쉘입니다. 다른 플랫폼의 많은 터미널 에뮬레이터 tmux및 Emacs의 쉘 모드는 새 쉘을 비 로그인 쉘로 엽니 다.

이 줄을 /etc/launchd.conf다음에 추가했습니다 .

setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin

PATH루트 실행 프로세스 의 값을 변경합니다 . 이 값은 사용자 별 실행 프로세스를 포함하여 다른 모든 프로세스에서 상속됩니다. /etc/launchd.conf재시작하거나 launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf프로세스 를 실행 하고 다시 시작 하여 변경 사항을 적용 할 수 있습니다 .

OS X ~/.profile에서 그래픽으로 로그인하면 읽을 수 없습니다. 두 경우 ~/.bash_profile~/.profile존재, 배쉬는 읽지 않습니다 ~/.profile중 하나.

~/.MacOSX/environment.plist 10.8에서 작동을 멈췄습니다.


답변