답변:
일반적으로 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/profile대부분의 (모든? 100 % 확실) 쉘에 의해 사용된다. PATH와 같이 어디에서나 원하는 것을 배치하는 것이 좋은 선택입니다. Bash는 .bash_파일을 읽는 반면 Zsh는 .zshrc다른 파일 과 함께 읽습니다 . 껍질에 따라 다릅니다.
path_helper되어 있지 대화 형 비 로그인 쉘 (도 (non-interactive) 형 모드 쉘) 요구했다. /etc/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에서 작동을 멈췄습니다.
/etc/profilebash가 주로 사용하는 스크립트 라는 것을 의미 합니까? 다른 쉘에 대한 경험이 없지만 다른 구조를 따른다고 가정합니까?