![$PATH는 (osx)에서 값을 어디서 얻나요?](https://linux55.com/image/9827/%24PATH%EB%8A%94%20(osx)%EC%97%90%EC%84%9C%20%EA%B0%92%EC%9D%84%20%EC%96%B4%EB%94%94%EC%84%9C%20%EC%96%BB%EB%82%98%EC%9A%94%3F.png)
$PATH를 입력하면 값 목록에 Python 프레임워크 의 일부 /etc/paths
와 이에 대한 링크도 표시됩니다. /etc/paths.d
이것들은 어디서 읽혀지나요?
답변1
컴퓨터에 로그인하면 loginwindow.app이 $HOME
, $SHELL
, $TMPDIR
, 및 를 $LOGNAME
포함 하는 기본 환경을 설정합니다 . 데몬이나 에이전트를 시작하여 환경을 변경할 수도 있습니다. 또는 확장을 통해 일반적으로 PATH 변수는 커널에서 하드 코딩된 PATH 변수로 설정됩니다.$USER
$PATH
launchd
sysctl user.cs_path
user.cs_path: /usr/bin:/bin:/usr/sbin:/sbin
터미널 에뮬레이터를 시작하면 기본적으로 호출됩니다 login
. login -pf <yourname>
아직 설정되지 않은 환경 변수만 설정됩니다(참고자료 참조 man login
).
그런 다음 쉘은 $SHELL
호출에서 해당 파일을 읽습니다. 설정된 PATH 변수를 가져오고, 읽고, 현재 PATH에서 중복 항목을 제거하고, PATH 변수를 설정된 대로 정렬한 다음, 그 안에 있는 파일을 읽고, 해당 파일을 PATH 변수에 추가한 다음, 원래 PATH에 임의의 경로를 추가하세요. 추가되지 않은 ../etc
path_helper
path_helper
/etc/paths
/etc/paths
/etc/paths.d
마지막으로 $SHELL은 홈 디렉토리에 있는 로그인 쉘에 해당하는 rc 파일을 읽습니다.
답변2
기본적으로 호출된 프로그램은 path_helper
다양한 쉘 rc 파일에서 /etc/*
실행 됩니다.
$ grep path_helper /etc/* 2>/dev/null
/etc/csh.login:#if ( -x /usr/libexec/path_helper ) then
/etc/csh.login:# eval `/usr/libexec/path_helper -c`
/etc/profile:#if [ -x /usr/libexec/path_helper ]; then
/etc/profile:# eval `/usr/libexec/path_helper -s`
/etc/zprofile:#if [ -x /usr/libexec/path_helper ]; then
/etc/zprofile:# eval `/usr/libexec/path_helper -s`
$
이것은 분명히아니요기본값은 비활성화 path_helper
하고 PATH
내 rc 파일에서 관리했습니다.