"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/profilerun 입니다 . 그러나 이것은 단지 시작점일 뿐입니다. 자신만의 시작 스크립트(존재하는 경우)에 추가 , 편집, 완전히 교체 등을 수행 할 수 있습니다./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:"이 시작 부분에 추가되고 $PATH(해당 디렉터리가 먼저 검색됨을 의미) ":/Users/mac/Library/Android/sdk /platform-tools:/platform-tools"가 끝에 추가됩니다. 무엇이 추가되는지 정확히 알고 싶다면 시작 스크립트를 살펴봐야 합니다.

그런데 이 설정 프로세스는 $PATHbash "로그인" 셸에만 적용됩니다. bash 쉘로 실행되는 모든 것은 bash 쉘 $PATH에서 상속되므로 본질적으로 동일할 것입니다. bash 비로그인 쉘은 다소 다른 설정 프로세스를 따릅니다. 다른 쉘과 쉘에서 전혀 시작되지 않은 것(예: cron 작업)은 완전히 다른 $PATHs.

답변2

수정 사항을 확인하려는 첫 번째 장소는 다음과 같습니다.

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

Bash가 아닌 것을 사용하는 경우 해당 구성 파일에서 PATH에 대한 언급이 있는지 확인하세요.

관련 정보