$ 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/*
일반적으로에 추가 PATH
로 path_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에서 작동을 멈췄습니다.