Mac OS X은 $PATH 값을 어떻게 설정합니까?

Mac OS X은 $PATH 값을 어떻게 설정합니까?

$PATH를 설정하는 방법에 대해 기본적으로 이해하고 있지만 Mac OS에서 가져오는 위치를 완전히 설명하는 문서가 있습니까?모두$PATH에 추가되는 경로는 무엇입니까? /etc/profile, /etc/paths및 과 같은 것을 알고 있지만 /etc/profile.d결국 $PATH 값에 영향을 미치는 다른 스크립트가 있습니까? 또한 비로그인 쉘과 로그인 쉘( .bashrc, ) 사이에 익숙하지 않지만 .bash_profile기본적인 차이점은 알고 있습니다.

답변1

일반적으로 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에서는 셸은 일반적으로 비로그인 셸로 시작된다는 것입니다. 조쉬 스테이거는로그인 쉘과 비로그인 쉘에 대한 좋은 설명.

따라서 기본적으로 경로를 설정할 수 있는 곳은 다음 두 세 가지뿐입니다.

  • /etc/profile(전화하는 것 path_helper)
  • /etc/paths그리고 /etc/paths.d(에서 전화함 path_helper)
  • 쉘 구성 파일( .bash_profile)

답변2

/etc/paths및 의 경로는 일반적으로 다음에 의해 /etc/paths.d/*추가됩니다.PATHpath_helper. path_helper는 에서 실행되므로 /etc/profilebash가 대화형 로그인 셸로 호출될 때 실행되지만 bash가 비로그인 셸이나 비대화형 셸로 호출될 때는 실행되지 않습니다.

/etc/paths/usr/local/bin기본적으로 끝에 포함되며 /etc/paths.d/기본적으로 비어 있습니다.

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

OS X에서는 ~/.profile그래픽으로 로그인할 때 읽혀지지 않습니다. ~/.bash_profile둘 다 존재하면 ~/.profilebash는 둘 중 하나도 읽지 않습니다 ~/.profile.

~/.MacOSX/environment.plist10.8에서 작동이 중지되었습니다.

관련 정보