"echo $PATH"와 /etc/paths의 차이점은 무엇입니까?

"echo $PATH"와 /etc/paths의 차이점은 무엇입니까?

$PATH를 echo하면 다음과 같은 메시지가 표시됩니다 Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools.

일부 경로를 제거하고 싶지만 명령을 사용하여 파일을 열면 vim /etc/paths다음과 같은 결과가 나타납니다.

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

/etc/paths 파일이 $PATH 변수와 다릅니까?

답변1

/etc/paths$PATH쉘 프로세스의 일부를 설정하는 데 사용됩니다 . 새 터미널 창을 열면 시작되고 bash여러 시작 스크립트가 실행됩니다. /etc/profileAND ~/.bash_profileOR 존재하지 않는 경우 ~/.bash_loginOR 존재하지 않는 경우 ~/.profile. 이 스크립트는 $PATH.

/etc/profile실행 되는 작업 중 하나 는 에 있는 모든 파일을 /usr/libexec/path_helper읽고 해당 내용을 추가하는 것입니다 . 그러나 이는 시작점일 뿐이며(존재하는 경우) 자체 시작 스크립트를 추가 , 편집, 완전히 교체할 수 있습니다./etc/paths/etc/paths.d$PATH$PATH

/etc/paths시작 스크립트(및/또는 실행되는 항목)가 "Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:"에서 at로 많은 항목을 추가하는 것 같습니다 . 시작 부분 $PATH(이 디렉토리가 먼저 검색됨을 의미함) 및 ":/Users/mac/Library/Android/sdk" /platform-tools:/platform-tools"가 끝에 추가됩니다. 무엇을 해야 할지 정확히 알고 싶다면 추가하려면 시작 스크립트를 살펴봐야 합니다.

그런데 이 설정 프로세스는 $PATHbash "로그인" 셸에서만 작동합니다. bash 쉘에 의해 실행되는 모든 것은 bash 쉘 $PATH에서 상속되므로 본질적으로 동일한 내용을 가질 수 있습니다. bash 비로그인 셸은 약간 다른 설정 프로세스를 따릅니다. 다른 쉘과 쉘에서 전혀 시작되지 않는 것(크론 작업 등)은 완전히 다른 $PATHs.

답변2

수정 사항을 확인하는 첫 번째 장소는

~/.profile
~/.bashrc
~/.bash_profile

Bash를 사용하지 않는 경우 구성 파일에서 PATH가 언급되어 있는지 확인하세요.

관련 정보