“echo $ PATH”와 / etc / paths의 차이점은 무엇입니까? 경로를 제거하고 싶지만 명령을 사용하여

$ PATH를 에코하면 다음과 같이 나타납니다 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 변수와 다른가요?



답변

/etc/paths$PATH쉘 프로세스 를 설정하는 데 사용되는 것의 일부입니다 . 새 터미널 창을 열면 AND bash시작 (존재하지 않는 경우 ) 또는 ( 존재하지 않는 경우) 여러 시작 스크립트가 실행됩니다 . 이 스크립트는를 포함하여 쉘 환경을 설정합니다 ./etc/profile~/.bash_profile~/.bash_login~/.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 :”이 시작 부분에 추가되고 $PATH(해당 디렉토리가 먼저 검색됨을 의미) “: / Users / mac / Library / Android / sdk / platform-tools : / platform-tools “가 끝에 추가됩니다. 무엇이 추가되는지 정확히 알고 싶다면 시작 스크립트를 봐야합니다.

BTW,이 설정 프로세스는 $PATHbash “login”쉘에만 적용됩니다. bash 쉘에 의해 실행되는 것은 $PATH그것으로부터 상속받을 것이므로 아마도 본질적으로 동일한 것입니다. 비 로그인 쉘 bash는 약간 다른 설정 프로세스를 따릅니다. 다른 쉘과 쉘에서 시작되지 않은 것 (예 : 크론 작업)은 완전히 다를 수 있습니다 $PATHs.


답변

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

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

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