OS X에서 전역 PATH 환경 변수를 설정하는 방법


101

모든 사용자 셸과 GUI 응용 프로그램이 동일한 PATH 환경을 갖도록 OS X의 전역 PATH 환경 변수에 추가하고 싶습니다.

셸 시작 스크립트에서 경로를 추가 할 수 있지만 GUI 응용 프로그램은 해당 설정을 상속하지 않습니다.

지금까지 찾은 유일한 방법은 /etc/launchd.conf 에서 PATH 환경 변수를 재정의하는 것입니다 .

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

에서 PATH에 실제로 추가하는 방법을 알 수 없습니다 launchd.conf.

나는이 방법에 대해 조금 걱정하고 있지만, 지금까지 이것이 유일한 방법입니다. 더 좋은 방법이 있습니까?



2
Yosemite 및 이후 버전에 대해서는 stackoverflow.com/questions/25385934/…
thSoft

여기에 답변 중 OP의 질문에 대한 답변이 없습니다. 그러나 thSoft의 의견은 바로 돈입니다! 어쩌면이 합병 또는 참조 된 질문에 연결해야합니다 stackoverflow.com/questions/25385934/...
케빈 흐스에게

답변:


71

palmer의 GUI 정보 는 정확하지만 셸에서 볼 수있는 경로를 수정하는보다 유지 관리 가능한 방법이 있습니다. 마찬가지로 mediaslave 말했다 , 당신은 편집 할 수 /etc/paths있지만에서 더 나은 텍스트 파일을 삭제할 수 있습니다 /etc/paths.d/그게의 경로가 모든 조개가 제대로 경로를 구성합니다.

예를 들어, 내 시스템에서 :

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

1
감사합니다! 참고 : 작동하려면 로그 아웃 한 후 다시 로그인해야합니다.
weronika

@weronika : 종료하고 다시 시작하기에 충분하다는 것을 알았습니다 X11(완전히 로그 아웃하는 것보다 고통스럽지 않습니다). 나는 그것을 시도하지 않았다 Terminal.
Peter Gluck

나는 터미널을 언급하고 있었다-당신 말이 맞았습니다.
weronika

8
이것은 알기는하지만이 메커니즘이 GUI 앱에는 적용되지 않는다는 점에서 OP의 질문에 대답하지 않습니다. OP는 기본 에 추가 할 수 있는 통합 솔루션을 찾고있었습니다 . $PATH
mklement

@cogg의 "내 시스템"이란 무엇입니까? 우리 모두 여기서 OS X를 사용하고 있지 않습니까? 죄송하지만 OS X를 처음 사용하고 있습니다. OS X 10.7을 사용하고 있습니다.
ericn

48

/etc/launchd.conf

launchd.conf파일은 ** 모든 사용자를 위해 GUI 및 콘솔 응용 프로그램과 함께 작동 하는 OS X v10.8 (Mountain Lion) 및 v10.9 (Mavericks)의 명령 줄 및 GUI 응용 프로그램 모두에서 작동하는 유일한 솔루션입니다. .

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

더하다

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

위의 예 /usr/local/bin에서 PATH의 기본 환경 값을 추가 했습니다.

이 파일은 스크립트가 아니며 대체를 사용할 수있는 옵션이 없습니다. 또한 이들을 적용하려면 재부팅해야합니다.

다른 모든 것은 부분적인 해결책 일뿐입니다.

  • environment.plist Spotlight를 통해 시작된 응용 프로그램에는 작동하지 않습니다.
  • /etc/paths -콘솔 전용
  • /etc/csh.cshrc또는 /etc/bashrc-일부 껍질에만

이 답변은 Mac OS X에서 환경 변수 설정 과 동일한 질문을 기반으로합니다 .


7
큰 발견이지만 질문은 이미 시작된 것에 대해 이야기 하고 경로에 추가 하는 방법을 묻습니다 .
cregox

21
자신을 "실제 답변"으로 가리키는 원래 질문에 주석을 추가 했습니까?
TJ Luoma

7
그것은 당신의 도움이되는 대답에 의해 암시되지만, 간단히 설명하면 : OP의 기본 경로 에 추가 하려는 욕구 는 지원되지 않습니다 /etc/launchd.conf.
mklement

전역이 아닙니다. / etc / profile이 path_helper를 호출하고 / etc / paths 및 /etc/paths.d/에서 PATH를 재 구축 할 때 명령 줄 환경에서이를 무시합니다.
Dave X

1
apple.stackexchange.com/questions/106355/… 에 따르면 , 이것은 더 이상 요세미티 이상에서 작동하지 않습니다
ericn

7

셸 단위로 설정해야합니다. Bash 및 csh와 유사한 쉘은 PATH 조정을위한 동일한 구성 파일 및 구문을 공유하지 않습니다.

launchctl로그인 할 때 환경 변수가 설정되어 있기 때문에이 작업을 시도하면 작동하지 않습니다. 쉘 세션 외부의 유닉스에는 시스템 전체에 존재하지 않습니다.

그래서 당신은 추가하고 싶습니다

setenv PATH "$PATH:/add/my/extra/path"

/etc/csh.cshrc

export PATH="$PATH:/more/paths:/

/etc/bashrc.

GUI 응용 프로그램에서 환경 변수를 원한다면 더 복잡합니다. .MacOSX/environment.plist각 사용자의 홈 디렉토리에 파일 을 작성해야 합니다. .MacOSX디렉토리 가능성이 기본적으로 존재하지 않을 것이다, 그래서 당신은 그것을 만들어야합니다.

파일 형식은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

자세한 내용 environment.plist 은 Apple 사이트에 있습니다 .


그러나 설정은 /etc/launchd.conf...Hmmm.../me에 설정되어있을 때 적용됩니다.
Xerxes

정말? 어떤 환경 변수를 설정하고 있습니까?
palmer

1
OS X 10.8 현재 업데이트 : ~/.MacOSX/environment.plist접근 방식이 더 이상 지원되지 않으며 사용자 수준에서 대체 방법이 없습니다. 시스템 전체에서 사용할 수 있습니다 /etc/launchd.conf(* .app 당 솔루션이 있음).
mklement

OP의 질문에 대답하지 않습니다.
Kevin Buchs

3

에 줄을 /etc/paths하나씩 추가하여 전역 경로를 편집 할 수 있습니다 .

sudo nano /etc/paths 당신을 거기에 도착해야합니다.


2
이 방법을 아는 것이 좋지만이 메커니즘이 GUI 앱에는 적용되지 않는다는 점에서 OP의 질문에 대답하지 않습니다.
mklement

1

path_helperOS X 에서 명령 행 유틸리티에 대한 매뉴얼 페이지를 보셨습니까 ? 나는 당신이 도움이 될 것이라고 생각 하는 약간의 관련 질문에 대답했습니다 .


1

누군가 가 가장 단순 하고 가장 우아한 방법을 다루 었는지 확실하지 않습니다 . 에 적어도 맥 OS X 10.6 (스노우 레오파드).

덤비는 [/etc/|~/.][profile|bashrc]파일이 작동하지만 다소 해킹입니다. /etc/paths.d/디렉토리 길을 가야하는 것입니다 :

  • 좋아하는 편집기로 Sudo.
  • 줄당 경로 *name*/etc/paths.d/사용하여 이름이 지정된 새 파일을 작성하십시오 (이미 존재하는 이름은 지정 하지 마십시오) .

    /usr/X11/bin
    /Developer/usr/bin
    
  • 그런 다음 추가

    eval '/usr/libexec/path_helper -s`
    

    profile또는 bashrc, 당신이 잘되어야합니다 이동합니다.


1
이 방법을 아는 것이 좋지만이 메커니즘이 GUI 앱에는 적용되지 않는다는 점에서 OP의 질문에 대답하지 않습니다.
mklement

파일 이름이 그대로 *name*입니까? 아니면 그냥 의미 name합니까?
Peter Mortensen

0

launchd가 이것을 수락하는지 확실하지 않지만 시도해보십시오.

setenv PATH "$ PATH : / my / path"

1
불행히도 그것은 작동하지 않습니다. launchctl이 환경 변수에 쉽게 액세스 할 수있는 것처럼 보이지 않습니다. 환경 변수를 가져 오는 명령이 있지만 사용 방법에 대한 문서는 없습니다.
lajos

0

난 당신이 사용하는 거라고 왜 확실하지 않다 /etc/launchd.conf반대 /etc/profile-하지만 난 맥 OS X에 전문가는 아니지만 - 나는 그것이 작동 확신이 당신을 생각하지만, launchd의 맥 OS X의 구현 / 교체입니다 init- 맥 OS X는 나를 혼란스럽게한다.

어쨌든 setenv PATH "$PATH:/more/paths:/and/more/paths"작동하고 (tcsh) bourn shell equivalent은 export PATH="$PATH:/more/paths:/and/more/paths"- launchd특정 쉘과 어떻게 관련되어 있는지 전혀 모른다 .

나는 더 많은 질문을 한 다음 대답했다 =)


4
/ etc / profile 경로 설정은 OS X GUI 앱에서 볼 수 없습니다. 이것은 bash에만 적용됩니다. 모든 응용 프로그램이 새로운 경로 설정을 갖기를 원합니다.
lajos

1
유닉스? 물론 유닉스입니다. 내 말은, 좀 우리는 30 년 동안 일한 것들을 깨뜨 렸지만 여전히 유닉스입니다! / sigh
Matt Simmons
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.