Mountain Lion에서 새로 시작된 모든 응용 프로그램에 대한 PATH 환경 변수를 한 곳에서 어떻게 설정합니까?


9

Ask On PATH환경 변수와 쉘, 스포트라이트 또는 파인더를 통해 시작된 응용 프로그램 에 대해 환경 변수를 설정하는 방법 에 대한 많은 질문이 있습니다 (일반적인 질문 : Finder 실행 응용 프로그램에 대한 PATH 설정 방법 또는 PATH 환경 변수 변경 방법). .. ).

대답은 sh시작 스크립트 에서 /etc/paths까지 /etc/launchd.conf입니다. 다음 은 Mac OS X Mountain Lion 10.8.2의 모든 앱 에 대한 통합 설정에 PATH대한 답변입니다 .

답변:


14

다른 옵션으로 많은 시험을 마친 후 결론을 내립니다.

쉘 스크립트, Finder 및 Spotlight와 같은 다른 방법으로 시작된 애플리케이션 을 위한 통합 된 방법PATH있습니까? 예, 아니오 :

  • 아니요 : PATH셸 시작 스크립트 (예 :)의 설정 은 셸에서 시작한 .bashrc앱에서만 작동합니다.
  • 아니오 : PATH현재 launchd프로세스를 통한 설정 launchctl setenv PATH <...>이 전혀 작동하지 않습니다.
  • : 설정 PATH에서 /etc/launchd.conf(시스템을 다시 시작) 적절한 것 PATH스포트 라이트, 도크 및 찾기 및 이후 (로컬) 쉘에 의해 실행 된 응용 프로그램에서 볼 수 있습니다.
  • 아니오 : 원격으로 호출 된 쉘은 환경을 상속 하지 않습니다 . ( ... ssh를 통한 원격 쉘이 환경을 상속하지 않는 이유를 참조하십시오 . )

쉘 설정에 대한 참고 사항 :

  1. 의 정확한 기능을 위해 지역 껍질이 중요하다 off 스위치 의 사용 /usr/libexec/path_helper의 기본 경로가 있기 때문에, /etc/paths에서 경로의 순서를 변경할 수 있습니다 PATH. **

  2. 원격 쉘 을 수용하려면 launchd환경을 쉘로 다시 가져와야합니다 . 당신의 다음과 같은 것을 사용하십시오 .bashrc:

# the vexatious path stuff
eval $(launchctl export)

전체 문제의 불행한 결과는 다음과 같습니다.

  • 이러한 통합 설정을 사용자별로 할 수있는 방법은 없습니다. ( ~/.launchd.conf작동하지 않습니다.)
  • 홈 디렉토리 확장 등과 같은 기술을 사용하여 다른 소스에서 PATH를 구성하는 쉬운 방법은 없습니다.

업데이트 : ssh를 통해 원격으로 로그인 한 쉘 /etc/launch.conf에서는 via를 통해 PATH 설정 이 작동 하지 않습니다 ( sshd환경이 전달되지 않으므로 부모 launchd에서 자식 쉘로 상속 됩니다). -그에 따라 답변을 편집하겠습니다.
halloleo

원격 쉘 솔루션으로 업데이트되었습니다.
halloleo

1
큰 대답; 다음과 같이 시작된 환경의 소싱을 단순화 할 수 있습니다 eval "$(launchctl export)".
mklement0

편집하는 쉬운 방법 /etc/launchd.conf은 그냥 실행 sudo -e /etc/launchd.conf(vi에 익숙한 EDITOR=nano sudo -e /etc/launchd.conf경우 )하거나 (모달이 아닌 편집기를 선호하는 경우)하는 것입니다.
nohillside

3

이전 답변 에서 확장 하여 경로를 변경 /etc/launchd.conf하려면 다음을 수행해야합니다.

  1. 관리자 권한이 있는지 확인하십시오.

  2. 다음 내용으로 새 텍스트 파일을 작성하고 필요에 맞게 수정하십시오.

    setenv PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/YourUserName/bin
    
  3. 홈 디렉토리에 로 저장하십시오 launchd.conf.

  4. Terminal.app (또는 선호하는 대체품)을 열고 다음을 입력하십시오.

    sudo mv ~/launchd.conf /etc

    sudo명령 의 이전 사용법에 따라 "작업을주의해서 수행하십시오"라는 메시지가 표시되지만 암호를 입력해야합니다. /etc예를 들어 TextEdit에서 파일을 저장할 때 직접 액세스 할 수없는 디렉토리로 파일을 이동하면됩니다 . sudo( "Super User DO"의 줄임말)는 해당 디렉토리에 쓰기 위해 관리자 권한이 필요하기 때문에 사용됩니다.

  5. 컴퓨터를 재부팅하십시오.

그리고 당신은 모든 준비가되어 있어야합니다. 행운을 빕니다!


세부 주셔서 감사합니다,하지만 문제는 있었다 하지 수정하는 방법 방법에 대해 launchd.conf, 오히려 모든 응용 프로그램이 통합 된 방법으로 같은 PATH 변수를 가져올 방법에 대한.
halloleo

맞습니다.하지만 원래는 PATHGUI 응용 프로그램 을 설정하는 방법을 찾으려고하는 질문을 검색했으며, 불쌍한 영혼이 어떻게 변화에 영향을 미치는지 알지 못할 것이라고 생각했습니다 ...
MattDMo

여기에 유효한 요점이 있습니다. 그래도 귀하의 정보를 답변에 통합 하는 것이 더 나은 방법 이라고 생각 합니다. -이 의견 스레드가 메타 토론이되었다고 생각합니다. 그래서 추가 답변으로해야 할
일로 meta.stackoverflow에서 열었습니다

1
실제로 이것이 meta.apple.stackexchange.com에 포함되어 있지 않아야합니까?
MattDMo

실제로 meta.apple.stackexchange.com은 올바른 장소였습니다. 나는 그것이 존재한다는 것을 몰랐습니다 ...
halloleo

-2

당신은 줄 수 https://github.com/ersiner/osx-env-sync 시도.

단일 소스 에서 명령 행 및 GUI 앱모두 처리 합니다 . 또한 최신 버전의 OS X (Yosemite)에서 작동합니다.


그가 작동하지 않는다고 말하는 비트를 사용하여 다른 답변을 자동화하는 것. 예 : launchctl setenv PATH <...>
user151019

@Mark 이것은 답변의 단계를 자동화하는 것과 아무 관련이 없습니다. 이 에이전트는 Launch Agent를 사용합니다. 시도해 볼 것을 제안합니다.
Ersin Er

수용된 솔루션 launchd도 시스템을 사용합니다 . 귀하의 솔루션에는 허용 된 답변에 명시된 것과 동일한 문제가 있습니다.
halloleo

@halloleo 실제로 해보셨습니까? 그리고 어떤 OS X 버전에서?
Ersin Er
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.