답변:
브루노가 제대로 작동하고 있습니다. 나는 광범위한 연구를 수행했으며 모든 GUI 응용 프로그램에서 사용할 수있는 변수를 설정하려는 경우 유일한 옵션은 /etc/launchd.conf
입니다.
참고하시기 바랍니다 environment.plist이 스포트 라이트를 통해 실행 된 응용 프로그램이 작동하지 않습니다. 이것은 Steve Sexton에 의해 문서화되어 있습니다 .
터미널 프롬프트를 엽니 다
유형 sudo vi /etc/launchd.conf
(참고 :이 파일은 아직 존재하지 않을 수 있음)
다음과 같은 내용을 파일에 넣습니다.
# Set environment variables here so they are available globally to all apps
# (and Terminal), including those launched via Spotlight.
#
# After editing this file run the following command from the terminal to update
# environment variables globally without needing to reboot.
# NOTE: You will still need to restart the relevant application (including
# Terminal) to pick up the changes!
# grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
#
# See http://www.digitaledgesw.com/node/31
# and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
#
# Note that you must hardcode the paths below, don't use environment variables.
# You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
#
setenv JAVA_VERSION 1.6
setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
setenv GROOVY_HOME /Applications/Dev/groovy
setenv GRAILS_HOME /Applications/Dev/grails
setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
setenv JRUBY_HOME /Applications/Dev/jruby
setenv ANT_HOME /Applications/Dev/apache-ant
setenv ANT_OPTS -Xmx512M
setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
setenv M2_HOME /Applications/Dev/apache-maven
setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
vi에서 변경 사항을 저장하고 Mac을 재부팅하십시오. 또는 위의 코드 주석에 표시된 grep
/ xargs
명령을 사용하십시오 .
터미널 창을 열고 입력하여 변수가 작동 export
하는지 확인하면 새 변수가 표시됩니다. IntelliJ IDEA 및 Spotlight를 통해 시작하는 기타 GUI 응용 프로그램에서도 사용할 수 있습니다.
launchd.conf
은 한 가지 방법이지만 재부팅 (다시 시작하려면)해야합니다. 당신이 재부팅을 피하려면, 내 대답을 참조 stackoverflow.com/questions/135688/...
로 시작 (및 확장으로 Spotlight에서 시작한 모든 환경)에 사용되는 환경을 설정할 수 있습니다 launchctl setenv
. 예를 들어 경로를 설정하려면
launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
또는 경로를 .bashrc
유사 하게 설정하려면 시작시 미러링하십시오.
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchctl setenv PATH $PATH
변경된 환경을 선택하려면 앱을 다시 시작해야하지만 재부팅 할 필요는 없습니다.
여기에는 Terminal.app에서 이미 실행중인 모든 셸이 포함되지만 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
bash 또는 zsh 와 같이 환경을 더 직접 설정할 수 있습니다 .
재부팅 후 변경 사항 을 유지 하려면 다음/etc/launchd.conf
과 같이 환경 변수를 다음 과 같이 설정할 수 있습니다 .
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchd.conf
재부팅하면 자동으로 실행됩니다.
이러한 변경 사항을 지금 적용하려면이 명령을 사용하여 재 처리해야합니다 launchctl.conf
(팁에 @mklement 감사합니다).
egrep -v '^\s*#' /etc/launchd.conf | launchctl
명령을 사용하여 launchctl
로드하는 방법과로드 방법 에 대해 자세히 알아볼 수 있습니다 .launchd.conf
man launchctl
environment.plist
.
etc/launchd.conf
egrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
OS X v10.7 (Lion) 이하 를 포함하여 다음을 설정할 수 있습니다.
~/.MacOSX/environment.plist
보다:
터미널의 PATH의 경우 .bash_profile
또는 설정 할 수 있어야합니다 .profile
(아마도 만들어야합니다)
대한 OS X의 v10.8 (산 사자) 이후 사용할 필요 launchd
하고launchctl
.
preferences.plist
당시 preferences.plist
스포트라이트를 통해 시작된 응용 프로그램에 대해 읽지 않았기 때문에 OS X 10.5에서 사용하는 것이 이상적이지 않았습니다. Louis의 Matthew의 답변과 전자 메일에 대한 주석을 참조하십시오. /002113.html . OS X 10.6의 경우 environment.plist
와 동일하게 작동합니다.
~/.bash_profile
다음 스 니펫에서와 같이 환경 변수 정의가 있다고 가정하십시오 .
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin"
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
로그인 할 때마다 그리고 필요할 때마다 이러한 변수를 사용자 세션에로드 할 실행 에이전트 가 필요합니다 . 또한 이러한 정의를 구문 분석하고 에이전트가 실행하는 데 필요한 명령을 빌드하려면 셸 스크립트가 필요합니다.
가진 파일 만들기 plist
(라는 이름의 예 접미사 osx-env-sync.plist
)에 ~/Library/LaunchAgents/
다음과 같은 내용으로 디렉토리를 :
<?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>osx-env-sync</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-l</string>
<string>-c</string>
<string>
$HOME/.osx-env-sync.sh
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
-l
여기서 매개 변수는 중요합니다. 그것은 함께 쉘 스크립트를 실행하는 데 필요한의 로그인 쉘 그래서 ~/.bash_profile
이 스크립트가 실행되기 전에 처음에 공급된다.
이제 쉘 스크립트입니다. ~/.osx-env-sync.sh
다음 내용으로 작성하십시오 .
grep export $HOME/.bash_profile | while IFS=' =' read ignoreexport envvar ignorevalue; do
launchctl setenv ${envvar} ${!envvar}
done
쉘 스크립트가 실행 가능한지 확인하십시오.
chmod +x ~/.osx-env-sync.sh
이제 현재 세션에 대한 런치 에이전트를로드하십시오.
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
(다시) GUI 응용 프로그램을 시작하고 환경 변수를 읽을 수 있는지 확인하십시오.
설정이 영구적입니다. 재시작 및 재 로그인 후에도 유지됩니다.
초기 설정 후 (방금 수행 한) ~/.bash_profile
전체 환경 에 대한 변경 사항을 다시 전체 환경 에 반영 하려면 launchctl load ...
명령을 다시 실행해도 원하는 작업이 수행되지 않습니다. 대신 다음과 같은 경고가 표시됩니다.
<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress
로그 아웃 / 로그인 프로세스를 거치지 않고 환경 변수를 다시로드하려면 다음을 수행하십시오.
launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
마지막으로 이미 실행중인 응용 프로그램 (Terminal.app 포함)을 다시 시작하여 변경 사항을 인식하도록하십시오.
또한 여기에서 코드와 설명을 GitHub 프로젝트로 푸시했습니다 : osx-env-sync .
이것이 최신 버전의 OS X (Yosemite & El Capitan)에 대한 궁극적 인 해결책이 되길 바랍니다.
하다:
vim ~/.bash_profile
파일이 존재하지 않을 수 있습니다 (없는 경우 파일을 만들 수 있음).
이것을 입력하고 파일을 저장하십시오.
export PATH=$PATH:YOUR_PATH_HERE
운영
source ~/.bash_profile
export
BASH가 지원하지 않기 때문에 +1 은 제가 제안하려고하는 것입니다setenv
OS X에서 환경 변수를 처리 할 때 해결해야 할 두 가지 문제가 있습니다. 첫 번째는 Spotlight (Mac 메뉴 / 상태 표시 줄의 오른쪽에있는 돋보기 아이콘)에서 프로그램을 호출 할 때, 두 번째는 Dock에서 프로그램을 호출 할 때 발생합니다. . 이 표준 쉘 위치에서 환경을 읽기 때문에 터미널 응용 프로그램에서 프로그램을 호출 / 유틸리티 (사소한 ~/.profile
, ~/.bash_profile
, ~/.bashrc
, 등)
Dock에서 프로그램을 호출 할 때 요소에 일련의 요소 가있는
~/.MacOSX/environment.plist
위치를 사용 하십시오 .<dict>
<key>KEY</key><string>theValue</string>
Spotlight에서 프로그램을 호출 할 때 필요한 모든 키 / 값 설정으로 시작이 설정되어 있는지 확인하십시오.
두 문제를 동시에 해결하기 위해 사용자 계정에 로그인 항목 (시스템 환경 설정 도구를 통해 설정)을 사용합니다. 로그인 항목은 물론 Emacs lisp 함수를 호출하는 bash 스크립트입니다. 물론 좋아하는 스크립팅 도구를 사용하여 동일한 작업을 수행 할 수 있습니다. 이 방법은 언제든지 작동하며 재부팅 할 필요가 없다는 추가 이점이 있습니다. 즉 ~/.profile
, 일부 쉘에서 로그인 항목을 편집 하고 실행하며 Dock 또는 Spotlight에서 새로 호출 된 프로그램에 대한 변경 사항을 볼 수 있습니다.
세부:
로그인 항목 : ~/bin/macosx-startup
#!/bin/bash
bash -l -c "/Applications/Emacs.app/Contents/MacOS/Emacs --batch -l ~/lib/emacs/elisp/macosx/environment-support.el -f generate-environment"
이맥스 리스프 기능 : ~/lib/emacs/elisp/macosx/envionment-support.el
;;; Provide support for the environment on Mac OS X
(defun generate-environment ()
"Dump the current environment into the ~/.MacOSX/environment.plist file."
;; The system environment is found in the global variable:
;; 'initial-environment' as a list of "KEY=VALUE" pairs.
(let ((list initial-environment)
pair start command key value)
;; clear out the current environment settings
(find-file "~/.MacOSX/environment.plist")
(goto-char (point-min))
(setq start (search-forward "<dict>\n"))
(search-forward "</dict>")
(beginning-of-line)
(delete-region start (point))
(while list
(setq pair (split-string (car list) "=")
list (cdr list))
(setq key (nth 0 pair)
value (nth 1 pair))
(insert " <key>" key "</key>\n")
(insert " <string>" value "</string>\n")
;; Enable this variable in launchd
(setq command (format "launchctl setenv %s \"%s\"" key value))
(shell-command command))
;; Save the buffer.
(save-buffer)))
참고 :이 솔루션은 특히 Matt Curtis가 제공 한 솔루션을 추가하기 전에 오는 사람들의 합병이지만 내 ~/.bash_profile
콘텐츠 플랫폼을 독립적 으로 유지 하고 launchd
환경 설정 (Mac 전용 시설)을 별도의 스크립트에 넣으려고했습니다. .
또 다른 무료 오픈 소스 Mac OS X v10.8 (Mountain Lion) 환경 설정 창 /environment.plist 솔루션은 EnvPane 입니다.
EnvPane의 소스 코드 는 GitHub에서 사용할 수 있습니다 . EnvPane은에 필적하는 기능을 가지고처럼 보이는 RCEnvironment 그러나, 즉, 그것으로 즉시 저장 변수를 업데이트 할 수 있습니다 것 없이 환영 다시 시작 또는 로그인에 대한 필요성.
개발자가 언급 한대로 :
EnvPane은 Mac OS X 10.8 (Mountain Lion)의 환경 설정 패널로 그래픽 및 터미널 세션에서 모든 프로그램의 환경 변수를 설정할 수 있습니다. Mountain Lion에서 ~ / .MacOSX / environment.plist에 대한 지원을 복원 할뿐만 아니라 로그 아웃했다가 다시 로그인 할 필요없이 변경 사항을 환경에 즉시 게시합니다. <SNIP> EnvPane에는 다음이 포함됩니다 (자동 설치). 1) 로그인 후 일찍 및 2) ~ / .MacOSX / environment.plist가 변경 될 때마다 실행되는 에이전트를 시작했습니다. 에이전트는 ~ / .MacOSX / environment.plist를 읽고 launchctl setenv 및 launchctl unsetenv에서 사용하는 동일한 API를 통해 해당 파일의 환경 변수를 현재 사용자의 시작된 인스턴스로 내 보냅니다.
면책 조항 : 나는 결코 개발자 또는 그의 프로젝트와 관련이 없습니다.
추신 : 나는 그 이름을 좋아합니다 ( 'Ends Pain'과 같은 소리).
(적어도) macOS 10.12.6 (Sierra)부터이 방법은 Apache httpd ( system
및의 user
옵션 과 옵션 모두)에서 작동을 중지 한 것으로 보입니다 launchctl config
. 다른 프로그램은 영향을받지 않는 것 같습니다. 이것이 httpd의 버그 인 것으로 생각됩니다.
이것은 OS X 10.10+ (특히 /usr/bin
더 이상 쓸 수없는 루트없는 모드로 인해 10.11+ )와 관련이 있습니다.
OS X의 버그로 인해 변수 launchctl setenv PATH <new path>
를 설정 하는 데 사용할 수없는 곳을 여러 곳에서 읽었습니다 PATH
(개인 경험에서는 사실처럼 보입니다). 쉘에서 시작되지 않은 응용 프로그램에PATH
대해 설정할 수있는 또 다른 방법이 있다는 것을 알았습니다 .
sudo launchctl config user path <new path>
이 옵션은 launchctl 매뉴얼 페이지에 설명되어 있습니다.
구성 시스템 | 사용자 매개 변수 값
launchd (8) 도메인에 대한 지속적인 구성 정보를 설정합니다. 시스템 도메인과 사용자 도메인 만 구성 할 수 있습니다. 지속적 스토리지의 위치는 구현 세부 사항이며 해당 스토리지에 대한 변경은이 하위 명령을 통해서만 수행해야합니다. 이 부속 명령을 통해 작성된 변경 사항을 적용하려면 재부팅이 필요합니다.
[...]
통로
대상 도메인 내의 모든 서비스에 대한 PATH 환경 변수를 문자열 값으로 설정합니다. 문자열 값은 environ (7)의 PATH 환경 변수에 대해 설명 된 형식을 따라야합니다. 서비스가 고유 한 PATH를 지정하면 서비스 별 환경 변수가 우선합니다.
참고 :이 기능을 사용하여 도메인 내의 모든 서비스에 대한 일반 환경 변수를 설정할 수는 없습니다. 의도적으로 PATH 환경 변수 범위에 속하며 보안상의 이유로 다른 것은 없습니다.
Finder에서 시작한 GUI 응용 프로그램 ( getenv
PATH를 얻는 데 사용) 으로 작동한다는 것을 확인했습니다 . 이 작업은 한 번만 수행하면 변경 사항이 재부팅을 통해 지속됩니다.
sudo launchctl procinfo <gui-pid>
새로 설정된 PATH
환경을 보여줍니다 . 그러나 sudo launchctl config user path <new path>
실제로 모든 사용자를 위해 설정 ... (새 사용자 추가 및 Sublime Text의 Python 콘솔을 사용하여 확인)
sudo launchctl config user path
(이것은 가정하는 것 같습니다).
launchctl
에서는 임의의 환경 변수를 설정할 수 없습니다 . PATH
변수는 예외이다.
산 사자에 모든 /etc/paths
및 /etc/launchd.conf
편집이 영향을하지 않습니다!
애플 개발자 포럼의 말 :
".app 자체의 Info.plist를 변경하여 원하는 환경 변수가 포함 된"LSEnvironment "사전을 포함하십시오.
~ / .MacOSX / environment.plist는 더 이상 지원되지 않습니다. "
따라서 응용 프로그램을 직접 편집 Info.plist
했습니다 ( "AppName.app"(이 경우 SourceTree)를 마우스 오른쪽 단추로 클릭 한 다음 " Show package contents
")합니다.
그리고 나는 다음과 같은 새로운 키 / dict 쌍을 추가했습니다 :
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>
( Apple의 LaunchServicesKeys 설명서 참조 )
이제 응용 프로그램 (내 경우에는 Sourcetree)은 주어진 경로를 사용하고 Git 1.9.3에서 작동합니다 :-)
추신 : 물론 특정 경로 요구에 맞게 경로 항목을 조정해야합니다.
Info.plist
파일을 수정 하면 응용 프로그램이로드되지 않습니다.LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
여기에 대한 답변이 "잘못"되지는 않지만, 다른 것을 추가 할 것입니다. OS X에서 "모든 프로세스"에 영향을 미치는 환경 변수를 변경하지 마십시오. 심지어 모든 프로세스가 지정된 사용자가 대화식으로 실행하도록 셸 외부에서도 변경하지 마십시오.
내 경험상 모든 프로세스의 PATH와 같은 환경 변수에 대한 전역 변경 사항은 Windows보다 OS X에서 문제를 일으킬 가능성이 훨씬 큽니다. 많은 OS X 응용 프로그램 및 기타 소프트웨어 (특히 OS 구성 요소 포함)는 UNIX 명령 줄 도구를 사용하고 시스템과 함께 제공된 도구 버전의 동작을 가정합니다. 그렇게 할 때 절대 경로를 반드시 사용할 필요는 없습니다 (유사한 주석은 동적으로로드 된 라이브러리 및 DYLD_ * 환경 변수에 적용됩니다). 예를 들어, Python 및 Ruby와 같은 OS X 제공 버전의 인터프리터 대체에 대한 다양한 스택 오버플로 질문에 대한 최고 등급의 답변은 일반적으로 "하지 마십시오"라고 생각하십시오.
OS X는 이와 관련하여 다른 UNIX 유사 운영 체제 (예 : Linux, FreeBSD 및 Solaris)와 실제로 다르지 않습니다. 애플이 이것을 쉽게 할 수있는 방법을 제공하지 않는 가장 큰 이유는 그것이 깨지기 때문 이다. Windows가 이러한 문제를 일으키지 않는 정도까지는 다음 두 가지 때문입니다. (1) Windows 소프트웨어는 UNIX 소프트웨어만큼 명령 줄 도구에 의존하지 않는 경향이 있으며 (2) Microsoft는 PATH와 같은 "전역"구성 옵션의 영향을 제한하기 위해 최신 Windows 버전에서 동적로드 동작을 변경 한 모든 프로세스에 영향을주는 변경으로 인해 발생한 "DLL 지옥"및 보안 문제에 대한 광범위한 기록.
"거의"여부와 상관없이 이러한 변경 사항을 더 작은 범위로 제한하면 훨씬 안정적인 시스템을 갖게됩니다.
때로는 이전 답변이 모두 작동하지 않는 경우가 있습니다. M2_HOME
Eclipse 또는 IntelliJ IDEA에서 시스템 변수 (예 :)에 액세스하려는 경우이 경우 나를 위해 작동하는 유일한 것은 다음과 같습니다.
먼저 (1 단계) /etc/launchd.conf
"setenv VAR value"와 같은 행을 포함하도록 편집 한 다음 (2 단계) 재부팅하십시오.
OS X에서는 다른 유닉스처럼 응용 프로그램이 시작되지 않기 때문에 .bash_profile을 수정하면 작동하지 않습니다. 부모의 쉘 변수를 상속받지 않습니다. 다른 모든 수정은 나에게 알려지지 않은 이유로 작동하지 않습니다. 다른 사람이 이것에 대해 분명히 할 수 있습니다.
Environment Variables 환경 설정 창을 쫓아 링크가 깨졌고 Apple 사이트에서 검색 한 결과 링크를 잊어 버린 것으로 보입니다 ... 난잡한 시작 과정의 끝 부분으로 돌아갔습니다.
내 시스템 (맥 OS X 10.6.8)에 environment.plist에 정의 된 변수를 표시 하는 신뢰성 (launchd에 통해) 스포트 라이트에서 시작 응용 프로그램에 수출된다. 내 문제는 해당 vars가 터미널의 새로운 bash 세션으로 내보내지지 않는다는 것입니다. 즉, 여기에 묘사 된 것과 반대의 문제가 있습니다.
참고 : environment.plist는 앞에서 설명한 것처럼 XML이 아닌 JSON처럼 보입니다.
나는에 의해 바르보고 스포트 라이트 애플 리케이션을 얻을 수있었습니다 편집 ~ /에서라도 / environment.plist 와 나는 내 .profile 파일에 다음을 추가하여 새로운 터미널 세션으로 같은 바르를 강제 할 수 있었다 :
eval $(launchctl export)
man launchd
, man launchctl
그리고 man launchd.conf
에서 터미널 창. Glad Apple은 Mac 개발자 라이브러리가 약간 지연 되더라도 매뉴얼 페이지를 최신 상태로 유지합니다.
Matt Curtis가 대답 한 것과 비슷하게 launchctl을 통해 환경 변수를 설정했지만 export라는 함수로 랩핑하여 내 .bash_profile에서 일반과 같은 변수를 내보낼 때마다 launchctl로 설정됩니다. 여기 내가하는 일이 있습니다.
내 .bash_profile은 한 줄로만 구성됩니다 (개인 취향 일뿐입니다).
source .bashrc
내 .bashrc에는 다음이 있습니다.
function export()
{
builtin export "$@"
if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
then
launchctl setenv "${@%%=*}" "${@#*=}"
elif [[ ! "${@//[^ ]/}" ]]
then
launchctl setenv "${@}" "${!@}"
fi
}
export -f export
위의 내용은 Bash 내장 "export"를 오버로드하고 모든 것을 정상적으로 내보내고 ( "export"와 함께 내보내는 것을 볼 수 있습니다!), 다음 중 어느 것을 사용하든 launchctl을 통해 OS X 앱 환경에 맞게 올바르게 설정합니다.
export LC_CTYPE=en_US.UTF-8
# ~$ launchctl getenv LC_CTYPE
# en_US.UTF-8
PATH="/usr/local/bin:${PATH}"
PATH="/usr/local/opt/coreutils/libexec/gnubin:${PATH}"
export PATH
# ~$ launchctl getenv PATH
# /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
export CXX_FLAGS="-mmacosx-version-min=10.9"
# ~$ launchctl getenv CXX_FLAGS
# -mmacosx-version-min=10.9
이렇게하면 매번 launchctl에 모든 변수를 보낼 필요가 없으며 .bash_profile / .bashrc를 원하는 방식으로 설정할 수 있습니다. 터미널 창을 열고 관심있는 환경 변수를 확인하고 launchctl getenv myVar
.bash_profile / .bashrc에서 무언가를 변경하고 터미널 창을 닫았다가 다시 연 다음 launchctl을 사용하여 변수를 다시 확인하십시오.
다시 말하지만, 마운틴 이후 라이온 세계를위한 다른 솔루션과 마찬가지로, 새로운 환경 변수를 앱에 사용할 수 있으려면 변경 후 해당 변수를 시작하거나 다시 시작해야합니다.
원하는 것을 수행하는 매우 간단한 방법은 다음과 같습니다. 제 경우에는 Gradle이 작동하게되었습니다 (Android Studio 용).
다음 명령을 실행하십시오.
sudo nano /etc/paths
또는 sudo vim /etc/paths
프롬프트가 표시되면 비밀번호를 입력하십시오.
새 터미널 창을 열고 다음을 입력하십시오.
echo $PATH
PATH 끝에 새 경로가 추가 된 것을 볼 수 있습니다.
이 게시물에서 다음 세부 정보를 얻었습니다.
OP가 단순한 Windows와 같은 솔루션을 찾고 있다고 생각합니다.
여기 있습니다 :
http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html
각 파일의 용도를 간결하고 명확하게하기 위해
~/.profile
Terminal.app가 시작될 때마다 공급됩니다~/.bashrc
"전통적으로"Bash 환경에 대한 모든 내보내기 명령문이 설정되는 위치/etc/paths
모든 사용자에 대한 PATH 환경 변수를 빌드하기위한 기본 경로 목록이 포함 된 Mac OS의 기본 파일입니다./etc/paths.d/
추가 검색 경로를 보유한 파일을 포함합니다비 터미널 프로그램은 터미널이 수행하는 시스템 전체 PATH 및 MANPATH 변수를 상속하지 않습니다! 특정 사용자가 시작한 모든 프로세스의 환경을 설정하여 Mac OS X GUI 응용 프로그램에서 환경 변수를 사용할 수있게하려면 해당 변수를 ~/.MacOSX/environment.plist
(Apple Technical Q & A QA1067)
당신을 동기화하려면 다음 명령 줄을 사용 environment.plist
하여 /etc/paths
:
defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"
/etc/launchd.conf는 OS X v10.10 (Yosemite), OS X v10.11 (El Capitan), macOS v10.12 (Sierra) 또는 macOS v10.13 (High Sierra)에서 사용되지 않습니다.
로부터 launchctl
매뉴얼 페이지
/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.
이 Ask Ask ( 답변) 답변에 설명 된 방법은 (재부팅 후) 저에게 효과적입니다. Dock 또는 Spotlight에서 실행 된 응용 프로그램은에서 설정 한 환경 변수를 상속합니다 ~/Library/LaunchAgents/my.startup.plist
. (내 경우에는 내가 설정하는 데 필요한 LANG
로, en_US.UTF-8
숭고한 텍스트 플러그인.)
이 $PATH
변수는 path_helper
의 /etc/paths
파일과 파일을 차례로 사용하기도 합니다 /etc/paths.d
.
Leopard (2008-11)의 PATH 및 기타 환경 문제에서 보다 자세한 설명을 볼 수 있습니다.
간단 해:
~ / .profile을 편집하고 다음과 같이 변수를 넣습니다.
$ vim ~ / .profile
파일에 넣어 :
MY_ENV_VAR = 값
저장 (: wq)
터미널을 다시 시작하십시오 (종료 한 후 다시여십시오).
모든 것이 괜찮은지 확인하십시오.
$ 에코 $ MY_ENV_VAR
$ 가치
단일 사용자 수정 ~/.profile
의 경우 나열된 것을 사용 하십시오. 다음 링크는 Bash가 다른 파일을 읽는시기를 설명합니다.
http://telin.ugent.be/~slippens/drupal/bashrc_and_others
GUI 응용 프로그램에 대한 환경 변수를 설정하려면 ~ / .MacOSX / environment.plist 파일이 필요합니다
글쎄, 나는에 대해 확실 해요 /etc/paths
및 ~/.MacOSX/environment.plist
파일. 그것들은 새로운 것입니다.
그러나 Bash를 사용하면 .bashrc
새로운 쉘을 호출 할 때마다 .bash_profile
실행되며 시작시 한 번만 실행됩니다.
나는 이것이 Mac OS X에서 얼마나 자주 발생하는지 모른다. 나는 윈도우 시스템이 모든 것을 시작하면서 구별이 무너 졌다고 생각한다.
개인적으로 필자는 .bashrc
필요한 모든 것을 갖춘 파일을 생성하여 혼란을 제거합니다 .
ln -s .bashrc .bash_profile
터미널 프로그램을 엽니 다 (기본적으로 응용 프로그램 / 유틸리티 폴더에 있음). 다음 명령을 실행하십시오
touch ~/.bash_profile; open ~/.bash_profile
기본 텍스트 편집기에서 파일이 열립니다.
예를 들어 Android SDK의 경우 :
Android SDK 플랫폼 도구 및 도구 디렉토리에 경로를 추가해야합니다. 이 예에서는 SDK가 설치된 디렉토리로 "/ Development / android-sdk-macosx"를 사용합니다. 다음 행을 추가하십시오.
export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools
파일을 저장하고 텍스트 편집기를 종료하십시오. .bash_profile을 실행하여 PATH를 업데이트하십시오.
source ~/.bash_profile
이제 터미널 프로그램을 열 때마다 PATH에 Android SDK가 포함됩니다.
이 작업은 정말 쉽고 빠릅니다. 먼저 터미널에서 ~ / .bash_profile 을 작성하십시오 .
touch .bash_profile
그때
open -a TextEdit.app .bash_profile
더하다
export TOMCAT_HOME=/Library/Tomcat/Home
documement를 저장하면 완료됩니다.
아주 간단합니다. 파일 .profile
(vi, nano , Sublime Text 또는 기타 텍스트 편집기) 파일을 편집하십시오. ~/
디렉토리 (사용자 디렉토리) 에서 찾을 수 있으며 다음과 같이 설정하십시오.
export MY_VAR=[your value here]
Java 홈의 예 :
export JAVA_HOME=/Library/Java/JavaVirtualMachines/current
저장하고 터미널로 돌아갑니다.
다음과 같이 다시로드 할 수 있습니다.
source .profile
또는 터미널 창을 닫고 엽니 다.
여기에는 두 가지 유형의 껍질이 있습니다.
그것은 배쉬로, 파일이 있음을 여기에 이해하는 것이 중요 .bashrc
에만 대화 형 및 비 로그인 모두의 쉘에 의해 읽기, 당신은 그 사람들이 종종로드 찾을 .bashrc
에서 .bash_profile
이러한 한계를 극복하기.
기본 지식을 이해 했으므로 설정 방법에 대해 조언 해 드리겠습니다.
.bash_file :
#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc # Get Aliases and Functions
#
로그인 쉘
/etc/profile
쉘은 먼저 file 명령을 실행합니다 /etc/profile
. 루트 권한으로 작업하는 사용자는이 파일을 설정하여 Bash를 실행하는 사용자의 시스템 전체 기본 특성을 설정할 수 있습니다.
.bash_profile
.bash_login
.profile
의 쉘 외모 다음으로 ~/.bash_profile
, ~/.bash_login
그리고 ~/.profile
발견 한이 파일의 첫 번째의 명령을 실행, 순서대로, (~ / 홈 디렉토리에 대한 단기 손으로). 이 파일 중 하나에 명령을 넣어에서 설정 한 기본값을 무시할 수 있습니다 /etc/profile
. 가상 터미널에서 실행되는 쉘은이 파일에서 명령을 실행하지 않습니다.
.bash_logout
로그 아웃하면 bash는 ~/.bash_logout
파일 에서 명령을 실행합니다 . 이 파일에는 임시 파일을 제거하는 명령과 같이 세션 후에 정리하는 명령이 포함되는 경우가 많습니다.
대화식 비 로그인 쉘
/etc/bashrc
bash가 직접 호출하지는 않지만 많은 ~/.bashrc
파일 호출 /etc/bashrc
합니다. 이 설정을 통해 루트 권한을 가진 사용자는 비 로그인 bash 쉘에 대한 시스템 전체 기본 특성을 설정할 수 있습니다.
.bashrc
대화식 비 로그인 셸은 ~/.bashrc
파일 . 일반적으로와 같은 로그인 셸의 시작 파일 .bash_profile
은이 파일을 실행하므로 login 및 nonlogin 셸은 모두에서 명령을 실행합니다 .bashrc
.
in 명령은 .bashrc
여러 번 실행될 수 있으며 서브 쉘은 내 보낸 변수를 상속하므로 기존 변수에 추가하는 명령을 .bash_profile
파일 에 넣는 것이 좋습니다 .
env "switch.1.disabled=true" open -n /Applications/Eclipse.app/
새로운 세트 시스템 환경으로 GUI 응용 프로그램을 시작합니다.