OS X 10.6 Snow Leopard에서 $ PATH는 어디에서 설정됩니까?


139

내가 입력 한 echo $PATH명령 행에서 얻을

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

.bash_login파일이 비어 있기 때문에 이것이 어디에서 설정되는지 궁금 합니다.

특히 MacPorts를 설치 한 후에 여러 개의 정크가 설치되어 있는지 걱정됩니다 /opt. 나는 디렉토리가 일반적인 Mac OS X 설치에도 있다고 생각하지 않습니다.

업데이트 : 내 진술 을 수정 한 jtimberman 에게 감사드립니다 echo $PATH.


5
SMcCandlish의 의견 :easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit /etc/paths . While the new /etc/paths.d/ thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide.
Sathyajith Bhat

@Sathya, /etc/paths.d설치 스크립트에 유용합니다. 설치 스크립트가 설치된 프로그램을 경로에 추가하도록하려면에 파일을 놓을 수 있습니다 /etc/paths.d. 경로를 수동으로 편집하려면 /etc/paths더 나은 옵션입니다.
haydenmuhl

나는 대부분이 게시물을 기반으로하는 스크립트를 만들었습니다, 그 신속하게 PATH이 여러 위치에 따라 정의된다 출력합니다 : gist.github.com/lopespm/6407349952bc8a1ff8fb
페드로 로페스

답변:


161

bash시작할 때 마다 로그인 할 때마다 다음 파일을 읽습니다. OS X의 목적 상 이것은 새 Terminal창 을 열 때마다 의미합니다 .

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

bash명령 행 에 입력하여 새 쉘을 시작하면 다음 과 같이 읽습니다..bashrc

OS X은 또한 ~/.MacOSX/environment.plist필요한 경우 경로를 포함하여 더 많은 환경 변수를 설정하는 데 사용합니다.

마지막으로, /etc/paths그리고 /etc/paths.d너무 쉘 읽습니다.


/opt/local/bin등은 ~/.tcshrcMacPorts 에 의해 추가됩니다 . 또한 살펴보십시오 ~/.cshrc.


5
분명히 ~/.MacOSX/environment.plist어떤 사람들에게는 효과가 없습니다. 에서 OS X에 대한 경로 변경 폴더를 사용하여 대안이 /etc/paths.d설명되어 있습니다. 나는 그것을 테스트하지 않았습니다.
Arjan

일에 대한 ~/.cshrc. 왜 ~/.profile작동하지 않는지 알아 내려고 노력 했습니다.
tomlogic

이 답변이 불완전하다고 생각합니다. 잘못된 경로가 존재하지 않는 곳을 찾으려고합니다. / usr / bin / local, 내 쉘이 불평하고 있으며 해당 파일에 없습니다.
Tommy

.bashrc입력 여부에 관계없이 읽힌 것 같습니다 bash.
Xiao Peng-ZenUML.com

48

파일을 살펴보세요 /etc/paths에 의해 사용되는, /usr/libexec/path_helper에 의해 사용된다 /etc/profile.

MacPorts의 sudo /etc/paths/opt/local/bin경우 터미널 창을 사용 하고 다시여십시오.


25

진심으로 Leopard는 새로운 길을 개척했습니다. 추가하려는 경로 부분을 포함하는 파일을 작성하여 /etc/paths.d에 넣으십시오.

한 단계로이 작업을 수행하는 간단한 예는 다음과 같습니다.

echo "/some/path/to/add" >> /etc/paths.d/somefilename

그렇지 않으면 /etc/paths.d로 가서 파일을 직접 넣을 수 있습니다. 어느 쪽이든, 해당 디렉토리에있는 파일의 모든 경로 부분이 기본 경로에 추가됩니다.

이것은 맨 패스에도 적용됩니다.

자세한 내용에 대한 링크는 다음과 같습니다.

ars technica : snow leopard의 PATH에 어떻게 추가합니까?

두 번째 참고 사항 : MacPorts는 Apple이 사용하지 않기 때문에 모든 것을 opt 디렉토리에 정확하게 넣습니다. 그렇게하면 충돌하지 않습니다. BTW 안내서에는 opt를 사용하는 이유와 원하는 경우 기본값을 변경하는 방법에 대한 설명이 있습니다.

MacPorts 안내서


매우 시원합니다. 이제 우리는 더 이상 프로파일 파일을 오염시키지 않기 위해 경로에 의존하는 응용 프로그램 만 가져야합니다 ...
Daniel Beck

그것을 사랑하십시오. 단순한!
Andrew Hedges

SMcCandlish의 의견 :I have to concur that there's nothing weird or bad about MacPorts using /opt (likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation.
Sathyajith Bhat

한 줄로 파일에 추가하지 않고 쉽게 제거 할 수 있습니다. 이거 너무 좋아. 감사합니다 leanne
Ibrahim Lawal

4

경로를 표시하려면 $ PATH를 에코하십시오.

echo $PATH

경로를 설정하려면을 (를) 수정 ~/.bash_profile하지 마십시오 ~/.bash_login.


3

ssh에 의해 결정된 경로도 있습니다 .

비교 echo $PATHssh localhost 'echo $PATH'. ssh는 / etc / profile을 읽지 않기 때문에 / usr / libexec / path_helper가 실행되지 않으므로 / etc / paths는 건너 뜁니다. 이제 시도하십시오 ssh localhost 'source /etc/profile; echo $PATH'. 경로는 더 가까워 야합니다. 나머지 차이점은 .bash_profile (ssh로 건너 뛰는) 및 .bashrc (ssh로 읽는)의 경로 수정으로 인한 것일 수 있습니다.

ssh 경로를 일반 터미널 경로와 유사하게하려면 source /etc/profile.bashrc에 추가 하십시오.


힌트 주셔서 감사합니다! ssh로 솔루션을 정확하게 찾고있었습니다. svnserve의 경로는 .profile에 있지만 .bashrc에는 없었기 때문에 svn + ssh가 svnserve 명령을 정확하게 찾을 수 없습니다.
KIR

2

다음 중 하나로 정의 될 수 있습니다.

  • 시스템 변수- /etc/paths
  • 사용자 변수-@Steve Folly의 설명 참조

1

실제로 .profile파일 대신 파일에 저장되며 .bash_loginMacPorts가 파일 대신이 파일을 사용 하는 것이 일반적입니다 .bash_login.

또한 /opt디렉토리는 일반적으로 MacPorts에 의해 생성되며 파일을이 폴더에 저장합니다.


1

유틸리티에 대한 문서 와 관련 /usr/libexec/path_helper하여 $ PATH의 초기 구성 요소는 /etc/paths기본적으로 다음과 같습니다.

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

OS-X Snow Leopard 용

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.