매버릭스에서 시스템 전체 PATH 환경 변수 설정


39

이전 OS 버전에서는 시스템 전체 PATH 환경 변수 /etc/launchd.conf를 설정하여 명령 줄뿐만 아니라 모든 앱에서 사용할 수 있도록했습니다.

매버릭스에서는 더 이상 사용되지 않는 것 같습니다.

매버릭스 에서이 작업을 수행하는 또 다른 기술이 있습니까?

답변:


47

요세미티

/etc/launchd.conf10.10에서는 더 이상 지원되지 않습니다. 참조 man launchctl:

초기 부팅시 하위 명령이 실행되도록 /etc/launchd.conf 파일을 더 이상 참조하지 않습니다. 이 기능은 보안상의 이유로 제거되었습니다.

예를 들어이 plist를 ~/Library/LaunchAgents/my.startup.plist다음 과 같이 저장할 수 있습니다 .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

launchctl setenv명령은 사용자로 실행, 그래서 그것은 단지 사용자 도메인에서 시작 프로세스에 적용된다.

"다시 로그인 할 때 창 다시 열기"가 선택된 경우 로그인시 다시 열린 응용 프로그램에는이 방법이 적용되지 않습니다.

매버릭스와 그 이전

10.9 이하에서는 예를 들어 다음을 실행할 수 있습니다.

echo setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin|sudo tee -a /etc/launchd.conf

그런 다음 다시 시작하여 변경 사항을 적용하십시오.

다른 방법

/etc/paths/etc/paths.d/전용 (또는 주로) 쉘을 적용. 의 선 /etc/paths/etc/paths.d/*패스에 추가됩니다 path_helper 에서 실행되는, /etc/profile, /etc/zshenv,와 /etc/csh.login. 나는 고려할 것이라고 쉘 이외의 다른 프로그램 모르는 /etc/paths또는 /etc/paths.d/.

~/.MacOSX/environment.plist 10.8에서 작동을 멈췄습니다.


2
네; 기본적으로 존재하지 않지만이를 생성하고 적절한 항목을 설정하면 도움이됩니다.
mgol

요세미티에서 일부 프로그램은 /etc/launchd.conf에서 설정 한 PYTHONPATH를 보지 못하고 명령 줄 수정 (응답의 두 번째 단락)을 사용했는데 작동하지 않는 것으로 나타났습니다. , 그것은 단지 launchctl 오류 / 도움말 메시지를 제공합니다.
Tango

@Tango 나는 대답을 편집했다. /etc/launchd.conf10.10에서 제거되었습니다.
Lri

나는 bash로 놀면서 내 경험이 10.10에서 launchctl setenv가 아무것도하지 않는 것 같다고 덧붙일 것이다. env 변수 설정을 시도한 후 echo로 값을 확인했지만 여전히 정의되지 않았습니다.
Tango

1
@Tango 실행 후 터미널 응용 프로그램을 종료했다가 다시 엽니 다 launchctl setenv. launchctl setenv기존 프로세스에는 영향을 미치지 않습니다.
Lri

12

훨씬 쉬운 방법이 있습니다. 폴더에 텍스트 파일을 넣습니다 /etc/paths.d/. 이 텍스트 파일에서 원하는 경로와 줄 바꿈을 입력하십시오. 가장 좋은 방법은 각 경로마다 새 파일을 만드는 것입니다.

내 시스템에는 '/ usr / local / mysql / bin'텍스트와 줄 바꿈이있는 MySQL이라는 파일이 있습니다.


@LauriRanta가 설명한 약점을 해결할 방법이 있는지 에 대한 새로운 질문을 방금 게시 했습니다 .
kuzzooroo

단지 일 화일뿐입니다 :이 방법은 권장 된 "OS X 방식"이기 때문에이 방법도 사용했습니다. 시스템이 /etc/paths.d에있는 PATH 파일을 일관되게 존중하도록하는 데 많은 운이 없었으며 일반적으로 export shell 명령을 사용하거나 ~ / .bash_profile에 PATH를 배치하여 항상 작동합니다. 시스템 전체가 아닌 현재 사용자 계정에만 해당됩니다. /etc/paths.d의 PATH 파일이 항상 당신을 위해 작동한다면, 나는 당신의 시스템이 나의 것보다 더 잘 행동한다고 ​​질투합니다;)
chillin

이것은 새로운 것입니다. 좋은!
CousinCocaine

3

파일에서 환경 변수를 설정할 수 있습니다 /etc/launchd-user.conf...

매버릭스에서는 다음 줄을 사용하여 파일에서 환경 변수를 구성 할 수있었습니다.

setenv TEST test

새로 부팅 한 후 $TEST/etc/launchd-user.conf에서 설정합니다.

편집하다

/etc/launchd.conf의 파일 구문이 유효하지 않을 수 있습니다. 시험을 위해 해당 파일의 내용을 게시 할 수 있습니까?

내가보고있는 것에서 /etc/launchd.conf에서 PATH 변수를 설정하는 것이 정상적으로 작동합니다. 그러나 매개 변수 확장launchd 은 수행하지 않습니다 . 따라서와 같은 항목이 있으면 결과 경로는 " " 로 설정됩니다 (참고 : PATH 값이 아니라 "$ PATH"텍스트)setenv PATH $PATH:/usr/local/bin$PATH:/usr/local/bin


고마워, 내가 겪고있는 문제는 PATH를 설정하는 것입니다. 다른 환경 변수가 작동하는 것 같습니다.
Tom

@ 톰 - 내가 추가 제안 위에서 제공 한
에디 켈리

1
실제로 launch-user.conf 또는 launch- [current_user_name] .conf
입니까?

'setenv TEST test'가 포함 된 /etc/launchd.conf가 Mavericks의 터미널로 전파되지 않습니다.
Dave X

죄송합니다 : s / Mavericks / Yosemite /.
Dave X

0

내 Mavericks 설치에서 재부팅 후 /etc/launchd.conf에 "setenv PATH blablabla"를 추가하지 못했습니다.

그래서 / etc / paths 끝에 새로운 경로를 추가했습니다.


그것은 나를 위해 작동하지 않았다. 나는 재부팅 /etc/paths했고 , 내가 원하는 모든 것을 포함하고 있지만 Sublime은 여전히 ​​원래 PATH만을 본다. 터미널에서 실행하면 작동합니다.
mgol

내 / etc / profile의 path_helper 명령은 / etc / paths 및 /etc/paths.d를 사용하여 /etc/launchd.conf에 의해 설정된 PATH를 덮어 씁니다.
Dave X

0

setenv PATH는 여전히 터미널 및 응용 프로그램에서 작동하지만 Finder에서 터미널에서 열기 또는 클릭하여 직접 시작하여 셸 스크립트에서 중단되었습니다. 매우 이상합니다. 다른 환경 변수가 /etc/launchd.conf작동합니다.

직접 시작된 쉘 스크립트에 대해이 문제를 해결하기 위해에 PATH 설정을 복제했습니다 ~/.bash_profile.


0

다른 사람이 제안한대로 편집 /etc/paths.d하거나 사용하는 .bash_profile것이 효과가 없었습니다 (실제로 그의 대답을 찬성하기 위해 여기에 왔지만 다시 찾을 수 없었습니까?!) /etc/paths.

필자의 경우 안드로이드 툴 adbandroid터미널 명령에 sdk 경로를 가리키며 ( adb현재 다른 디렉토리로 이동)

/usr/local/bin
...
/Applications/adt-bundle-mac/sdk/platform-tools  //new entries
/Applications/adt-bundle-mac/sdk/tools

0

SWEET, 해당 XML을 ~ / Library / LaunchAgents / setenv.SVN.plist에 추가하면 BBEdit이 / opt에 설치된 하위 버전 바이너리를 사용할 수있었습니다.

<clip>
<string>launchctl setenv PATH /opt/subversion/bin:$PATH</string>
<clip>

1
이 파일이 매개 변수 확장을 지원하는지 확인하는 방법을 알고 있습니까? / opt의 경로가 유일한 경로가되도록 경로를 설정했을 수 있습니다. 그리고 나는 그것이 $ PATH 사용을 지원하지 않을 것이라고 생각합니다. 기존 경로를 어떻게 결정 하시겠습니까?
Mark M

-1

간단히 'bin'(추가하려는 경로) 경로를 / etc / paths 파일에 추가하십시오-재부팅 또는 재 로그인 !!!

sudo vi /etc/paths 
(create a file (paths file) if it does't exist, I am using 'vi' editor, you can use your own as super user )
then, add your bin directory path like below 

/usr/local/mysql/bin
/usr/local/apache-ant-1.9.3/bin
/usr/local/gradle-1.11/bin

파일을 저장하고 다시 로그인하십시오 ... 도움이되기를 바랍니다.

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