codememo

OS X에서 환경 변수 설정

tipmemo 2023. 5. 3. 21:27
반응형

OS X에서 환경 변수 설정

OS X에서 PATH와 같은 환경 변수를 수정하는 올바른 방법은 무엇입니까?

구글에서 조금 찾아보니 편집할 파일이 세 개나 있습니다.

  • /etc/messages
  • ~/.프로파일
  • ~/.tcshrc

저는 이 파일들 중 일부도 가지고 있지 않으며, OS X가 지금 bash를 사용하기 때문에 .tcshrc가 틀렸다고 확신합니다.이러한 변수, 특히 PATH는 어디에서 정의됩니까?

OS X v10.5 (Leopard)를 실행하고 있습니다.

Bruno는 제 궤도에 있습니다.광범위한 조사를 해봤는데 모든 GUI 응용 프로그램에서 사용할 수 있는 변수를 설정하려면 다음과 같은 방법이 있습니다./etc/launchd.conf.

environment.plist는 Spotlight를 통해 시작된 응용 프로그램에서는 작동하지 않습니다. 이것은 여기 스티브 섹스턴에 의해 기록되었습니다.

  1. 터미널 프롬프트 열기

  2. sudo vi /etc/launchd.conf(참고: 이 파일은 아직 존재하지 않을 수 있습니다.)

  3. 다음과 같은 내용을 파일에 넣습니다.

    # 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
    
  4. vi에 변경 내용을 저장하고 Mac을 재부팅합니다.또는 위의 코드 주석에 표시된 xargs/ 명령을 사용합니다.

  5. 터널창열다고입을력음변여하작수증다중명니임합동을가을미▁are다▁prove▁opening▁and▁that▁variables증▁by▁your▁working니명합▁window를 입력하여 변수가 작동하고 있음을 증명합니다.export그리고 당신은 당신의 새로운 변수를 봐야 합니다.이러한 기능은 Spotlight를 통해 실행하는 IntelliJ IDEA 및 기타 GUI 응용 프로그램에서도 사용할 수 있습니다.

~/.launchd.conf가 작동할 것으로 예상하지 않음

launchctl의 man 페이지는 그것이 작동하지 않았다고 말합니다.

사용되지 않고 제거된 기능

launchctl에는 더 이상 대화형 모드가 없으며 stdin의 명령도 받지 않습니다./etc/launchd.conf 파일은 더 이상 초기 부팅 시간 동안 실행할 하위 명령에 대해 참조되지 않습니다. 이 기능은 보안 고려 사항으로 제거되었습니다.사용자 세션을 설정하기 전에 $HOME/.launchd.conf를 참조하는 것으로 문서화되었지만 이 기능은 구현되지 않았습니다.

Spotlight에 의해 시작되는 새로운 프로세스를 위한 환경을 설정하는 방법(재부팅 필요 없음

▁you그▁spotlight▁▁withd▁from)를 하여 시작된(그리고된) 할 수 .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 중인 셸이 가 Terminal.app을 직접 할 수도 . 예를 들어export PATH=/opt/local/bin:/opt/local/sbin:$PATH 또는 zsh에 해당합니다.

재부팅 후 변경 사항을 유지하는 방법

새로운 방법(10.10 요세미티 이후)

사용하다launchctl config user path /bin:/usr/bin:/mystuff를 참조하십시오.man launchctl자세한 정보는.

이전 방법

여기에 : 이답변상있단읽는에페이인다있여용나기니습기와능설이명된기에문는에지의읽▁thelct▁described▁page▁the▁launch▁feature(reading▁(▁quote기▁at다니▁here/etc/launchd.conf부팅 시)는 보안상의 이유로 제거되었습니다.

재부팅변경 사항을 유지하려면 환경 변수를 설정할 수 있습니다./etc/launchd.conf 예:

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

launchd.conf를 재부팅하면 자동으로 실행됩니다.

이러한 변경 사항을 지금 적용하려면 이 명령을 사용하여 다시 처리해야 합니다.launchd.conf(팁에 대해 @보완적으로 감사합니다!)

egrep -v '^\s*#' /etc/launchd.conf | launchctl

은 에대자세알수있다습니아볼에 대해 더 알 수 .launchctl그리고 어떻게 로딩되는지.launchd.conf 명령으로man launchctl.

OS X v10.7(Lion)포함하여 다음 위치에서 설정할 수 있습니다.

~/.MacOSX/environment.plist

참조:

의 PATH 대다설을정에 설정할 수 ..bash_profile또는.profile 당신은할 (마도당신그만할야것다입니어들아것을은)▁(다것▁it니할()

OS X v10.8(Mountain Lion) 이상경우 및 를 사용해야 합니다.

단일 소스의 명령줄 및 GUI 애플리케이션용 솔루션(Mac OS X v10.10(요세미티) 및 Mac OS X v10.11(El Capitan)과 함께 작동)

정의경수에가가보다겠니습정해고에 환경 가 있다고 ~/.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"

이러한 변수를 사용자 세션에 로드할 각 로그인 및 요청 시 언제든지 실행할 Launch Agent가 필요합니다.또한 이러한 정의를 구문 분석하고 에이전트가 실행할 필요가 있는 명령을 작성하기 위해 셸 스크립트가 필요합니다.

다음을 사용하여 파일 만들기plist named 접사예미됨 (예: 명명)예))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(요세미티 & 엘 캐피탄)에 대한 궁극적인 해결책이 되기를 바랍니다.

  1. 수행:

    vim ~/.bash_profile
    

    파일이 존재하지 않을 수 있습니다(존재하지 않을 경우 그냥 생성할 수 있습니다).

  2. 다음을 입력하고 파일을 저장합니다.

    export PATH=$PATH:YOUR_PATH_HERE
    
  3. 달려.

    source ~/.bash_profile
    

OS X에서 환경 변수를 다룰 때 근본적으로 해결해야 할 두 가지 문제가 있습니다.첫 번째는 Spotlight(Mac 메뉴/상태 표시줄 오른쪽에 있는 돋보기 아이콘)에서 프로그램을 호출할 때이고 두 번째는 Dock에서 프로그램을 호출할 때입니다.것은 표준 셸 때문에 입니다.~/.profile,~/.bash_profile,~/.bashrc아래)

독서프램때사호용출을 합니다.~/.MacOSX/environment.plist<dict>의 요에포일련의가 .<key>KEY</key><string>theValue</string>요소들.

Spotlight에서 프로그램을 호출할 때 필요한 모든 키/값 설정으로 시작이 설정되었는지 확인합니다.

두 문제를 동시에 해결하기 위해 사용자 계정의 로그인 항목(시스템 기본 설정 도구를 통해 설정)을 사용합니다.물론 좋아하는 스크립팅 도구를 사용하여 동일한 작업을 수행할 수 있지만 로그인 항목은 Emacslip 함수를 호출하는 bash 스크립트입니다. 접방언작필않재요추다부지이즉가다있있다수이니니습습점편인이, 집할근은적식지하이는팅든제동며하▁.~/.profile일부 셸에서 로그인 항목을 실행하고 새로 호출된 프로그램(도크 또는 스포트라이트)에 대한 변경 사항을 표시합니다.

세부사항:

항목: 로인항목:~/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"

Emacs lip 능기:~/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) Preference 창/environment.plist 솔루션은 EnvPane입니다.

GitHub에서 사용할 수 있는 EnvPane의 소스 코드입니다.EnvPane은 RC 환경과 비슷한 기능을 가지고 있는 것처럼 보이지만, 다시 시작하거나 로그인할 필요 없이 저장된 변수를 즉시 업데이트할 수 있는 것으로 보입니다.

개발자가 언급한 바와 같이:

EnvPane은 Mac OS X 10.8(Mountain Lion)의 기본 설정 창으로 그래픽 및 터미널 세션에서 모든 프로그램에 대한 환경 변수를 설정할 수 있습니다.~/에 대한 지원을 복원할 뿐만 아니라또한 MacOSX/environment.plist in Mountain Lion은 로그아웃했다가 다시 로그인할 필요 없이 환경에 대한 변경 사항을 즉시 게시합니다.<SNIP> EnvPane은 로그인 후 1) 조기에 실행되고 2) ~/일 때마다 실행되는 시작된 에이전트를 포함(및 자동으로 설치)합니다.MacOSX/environment.plist 변경 사항.에이전트가 ~/로 표시됩니다.MacOSX/environment.plist는 launchctl setenv 및 launchctl unsetenv에서 사용하는 것과 동일한 API를 통해 해당 파일의 환경 변수를 현재 사용자의 시작 인스턴스로 내보냅니다.

고지 사항:저는 개발자나 그/그녀의 프로젝트와 전혀 관련이 없습니다.

추신. 저는 그 이름이 마음에 듭니다. ('Ends Pain'처럼 들립니다.)

온 더 마운틴 라이온/etc/paths그리고./etc/launchd.conf편집해도 효과가 없습니다!

Apple의 개발자 포럼은 다음과 같이 말합니다.

".app 자체의 Info.plist를 원하는 환경 변수가 포함된 "LSEnvironment" 사전을 포함하도록 변경합니다.

~/.MacOSX/environment.plist는 더 이상 지원되지 않습니다."

그래서 저는 직접 애플리케이션의 내용을 직접 편집했습니다.Info.plist(" SourceTree 오른쪽 단추로 "("AppName.app"("AppName.app")("SourceTree")를 클릭합니다Show package contents").

패키지 내용 표시

그리고 다음과 같은 새 키/구문 쌍을 추가했습니다.

<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에서 서비스 키 시작 설명서)

여기에 이미지 설명 입력

이제 애플리케이션(나의 경우 소스 트리)은 주어진 경로를 사용하고 Git 1.9.3과 함께 작동합니다 :-)

PS: 물론 경로 항목을 특정 경로 요구에 맞게 조정해야 합니다.

업데이트(2017-08-04)

( 10으로 이 httpd에 한 것 . () macOS 10.12.6 (sierra) Apache httpd (sierra).system 리고그고.user.launchctl config을 받지 않는 으로 보입니다.) 다른 프로그램은 영향을 받지 않는 것 같습니다.이것은 httpd의 버그일 가능성이 있습니다.

원답

은 OS X 10 ( 10와 이 있습니다. 여기서 OS X 10.10+ ( 이와루인특모는관해다니스 10.11+)가 사용됩니다./usr/bin더 이상 쓸 수 없음).

여러 곳에서 읽은 적이 있습니다.launchctl setenv PATH <new path>설정하기 위해PATH변수는 OS X의 버그로 인해 작동하지 않습니다(개인적인 경험으로 볼 때 사실인 것 같습니다).▁▁the요'알▁another어s▁i 다른 방법이 있다는 것을 발견했습니다.PATH셸에서 시작되지 않은 응용 프로그램에 대해 설정할 수 있습니다.

sudo launchctl config user path <new path>

이 옵션은 launchctl man 페이지에 설명되어 있습니다.

config system | 사용자 매개 변수 값

시작된(8) 도메인에 대한 영구 구성 정보를 설정합니다.시스템 도메인과 사용자 도메인만 구성할 수 있습니다.영구 스토리지의 위치는 구현 세부 정보이며, 해당 스토리지에 대한 변경은 이 하위 명령을 통해서만 수행해야 합니다.이 하위 명령을 통해 변경한 내용을 적용하려면 재부팅해야 합니다.

[...]

경로.

대상 도메인 내의 모든 서비스에 대한 PATH 환경 변수를 문자열 값으로 설정합니다.문자열 값은 환경(7)의 PATH 환경 변수에 대해 설명된 형식을 따라야 합니다.서비스가 자체 PATH를 지정하는 경우 서비스별 환경 변수가 우선합니다.

참고: 이 기능을 사용하여 도메인 내의 모든 서비스에 대한 일반 환경 변수를 설정할 수 없습니다.보안상의 이유로 PATH 환경 변수로 의도적으로 범위가 지정됩니다.

파인더에서 시작한 GUI 애플리케이션으로 작동하기 위해 확인했습니다.getenvPATH)을(를 참조하십시오.이 작업은 한 번만 수행하면 되며 변경 사항은 재부팅을 통해 지속됩니다.

여기서 답이 "잘못된" 것은 아니지만, OS X에서 주어진 사용자가 대화식으로 실행하는 모든 프로세스에 대해 "모든 프로세스" 또는 셸 외부에 영향을 미치는 환경 변수 변경을 하지 마십시오.

제 경험에 따르면, 모든 프로세스에 대한 PATH와 같은 환경 변수에 대한 글로벌 변경은 Windows보다 OS X에서 문제가 발생할 가능성이 훨씬 더 높습니다.그 이유는 많은 OS X 애플리케이션 및 기타 소프트웨어(특히 OS 자체의 구성 요소 포함)가 후드 아래에 있는 UNIX 명령줄 도구에 의존하고 시스템과 함께 제공되는 이러한 도구 버전의 동작을 가정하기 때문입니다.절대 경로를 사용할 필요는 없습니다(동적으로 로드된 라이브러리 및 DYLD_* 환경 변수에도 유사한 설명이 적용됨).예를 들어, Python 및 Ruby와 같은 OS X 제공 인터프리터 버전 교체에 대한 다양한 Stack Overflow 질문에 대한 가장 높은 평가를 받은 답변이 일반적으로 "이 작업을 수행하지 마십시오."라고 말합니다.

OS X는 이 점에서 다른 유닉스 계열 운영 체제(예: Linux, FreeBSD 및 Solaris)와 다를 바가 없습니다. Apple이 이를 위한 쉬운 방법을 제공하지 않는 가장 가능성이 높은 이유는 그것이 무언가를 파괴하기 때문입니다.Windows가 이러한 문제에 취약하지 않은 이유는 두 가지입니다. (1) Windows 소프트웨어는 UNIX 소프트웨어만큼 명령줄 도구에 의존하지 않는 경향이 있습니다.(2) 마이크로소프트는 "DLL 지옥" 및 모든 프로세스에 영향을 미치는 변경으로 인한 보안 문제에 대해 광범위한 역사를 가지고 있으며 PATH와 같은 "글로벌" 구성 옵션의 영향을 제한하기 위해 최신 Windows 버전에서 동적 로드 동작을 변경했습니다.

"레임"이든 아니든, 그러한 변경 사항을 더 작은 범위로 제한한다면 훨씬 더 안정적인 시스템을 갖게 될 것입니다.

때때로 이전의 모든 대답들이 단순히 효과가 없습니다. 변수: 시템변액려예경는우하스세수에스예▁to)에 대한 권한을 과 같이 하십시오.M2_HOMEEclipse 또는 IntelliJ IDEA에서 이 경우 제게 맞는 것은 다음과 같습니다.

첫(1단계) 집/etc/launchd.conf다음과 같은 행을 포함합니다. "setenv VAR value"를 선택한 다음(2단계) 재부팅합니다.

단순히 .bash_profile을 수정하는 것은 작동하지 않습니다. 왜냐하면 OS X에서 응용 프로그램은 다른 유닉스에서처럼 시작되지 않고 부모의 셸 변수를 상속하지 않기 때문입니다.다른 모든 수정 사항들은 저에게 알려지지 않은 이유로 작동하지 않을 것입니다.아마 다른 누군가가 이것에 대해 명확히 할 수 있을 것입니다.

환경 변수 기본 설정 창을 추적한 후 링크가 끊어진 것을 발견하고 Apple 사이트에서 검색한 결과 이를 잊은 것 같습니다.저는 이해하기 힘든 시작 과정의 흔적으로 돌아가기 시작했습니다.

내 시스템(Mac OS X 10.6.8)에서는 environment.plist에 정의된 변수가 Spotlight에서 실행된 앱(launchd를 통해)으로 안정적으로 내보내고 있는 것으로 보입니다.문제는 그 변수들이 터미널의 새 bash 세션으로 내보내지 않는다는 것입니다.즉, 저는 여기에 묘사된 것과 반대의 문제를 가지고 있습니다.

참고: environment.plist는 앞서 설명한 대로 XML이 아닌 JSON처럼 보입니다.

Spotlight 앱에서 ~/MacOSX/environment.plist 편집하여 변수를 볼 수 있게 하고 다음을 .profile 파일에 추가하여 동일한 변수를 새 터미널 세션에 강제로 추가할 수 있었습니다.

eval $(launchctl export)

파일 Bash 작일파시 --~/.bashrc,~/.bash_profile,~/.profile이이이파상있일라는 이상한 ~/.MacOSX/environment.plistGUI 응용 프로그램의 환경 변수입니다.

Matt Curtis의 답변과 마찬가지로, 저는 launchctl을 통해 환경변수를 설정했지만 export라는 함수로 포장하여 .bash_profile에서 normal과 같은 변수를 내보낼 때마다 launchctl로 설정됩니다.제가 하는 일은 다음과 같습니다.

  1. 내 .bash_profile은 한 줄로만 구성됩니다. (이것은 단지 개인적인 선호일 뿐입니다.)

    source .bashrc
    
  2. 내 .bashrc에는 다음이 있습니다.

    function export()
    {
        builtin export "$@"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${!@}"
        fi
    }
    
    export -f export
    
  3. 위는 "내보내기"에 내장된 Bash를 오버로드하고 모든 것을 정상적으로 내보낸 다음("내보내기"를 함께 내보냅니다!), 다음 중 하나를 사용하든 상관없이 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
    
  4. 이렇게 하면 매번 ctl을 실행하기 위해 모든 변수를 보낼 필요가 없고 내 .bash_profile / .bashrc를 원하는 방식으로 설정할 수 있습니다.창을 하십시오.launchctl getenv myVar하고 터미널 창을 다시 launchctl로 확인하고 되었습니다.vms_profile/.svrc에서 무언가를 변경하고 터미널 창을 닫았다가 다시 열고 launchctl로 변수를 다시 확인하면 voila가 변경됩니다.

  5. 다시 말하지만, 포스트 마운틴 라이온 세계의 다른 솔루션과 마찬가지로 앱에 사용할 수 있는 새로운 환경 변수를 사용하려면 변경 후에 실행하거나 다시 실행해야 합니다.

여기 여러분이 원하는 것을 할 수 있는 아주 간단한 방법이 있습니다.저의 경우, Gradle이 (Android Studio용) 작업을 하게 되었습니다.

  • 터미널을 엽니다.
  • 다음 명령을 실행합니다.

    sudo nano /etc/paths또는sudo vim /etc/paths

  • 메시지가 나타나면 암호를 입력합니다.

  • 파일의 맨 아래로 이동하여 추가할 경로를 입력합니다.
  • +를 눌러 종료합니다.
  • 수정된 버퍼를 저장하려면 'Y'를 입력합니다.
  • 새 터미널 창을 열고 다음을 입력합니다.

    echo $PATH

PATH 끝에 새 경로가 추가됩니다.

저는 이 게시물에서 다음과 같은 세부 정보를 얻었습니다.

Mac OS X 10.8 Mountain Lion 이상의 PATH에 추가

저는 OP가 단순하고 윈도우와 같은 솔루션을 찾고 있다고 생각합니다.

여기 있습니다.

http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html

2022년 2월(MacOs 12+)

여기에 있는 솔루션은 재부팅 또는 응용 프로그램 재시작 후에 작동해야 합니다.

CLI

선택한 CLI 구성 파일을 엽니다.

  • open 시배오용픈▁에 대해~/.bash_profile
  • open zsh~/.zshrc

추가(또는 대체)

export varName=varValue 

(만약에varValue공백이 들어 있습니다. - 포장합니다.")

명령줄 앱을 다시 시작해야 합니다.

GUI

CLI 단계를 완료합니다.GUI 앱이 닫혀 있는지 확인합니다.명령줄에서 GUI 앱을 엽니다.예:

open /Applications/Sourcetree.app

을 지정할 수도 .).zshrc)

원칙

  • Mac에는 모든 컨텍스트에 대한 환경 변수를 설정하는 구성 옵션이 없습니다.
  • 사용자 프로필 외부에서 변경하지 마십시오.

더 이상 작동하지 않습니다.

  • launchctl config user varName varVal(MacOS 12.1+)
  • »/etc/launchd.conf
  • (xml 일:plist

각 파일의 용도에 대해 간결하고 명확하게 설명

  • ~/.profileTerminal됩니다.Terminal.app은 다음과 같이 지정됩니다.
  • ~/.bashrcBash 모든 이 " 설정되는 경우입니다. " " 으로" Bash " 한에모대환" Bash " 기내문든보다내이설니정됩여경기전서▁is"
  • /etc/paths는 모든 PATH 기본 입니다.
  • /etc/paths.d/에는 추가 경로를 되어 있습니다.

단말기가 아닌 프로그램은 단말기가 수행하는 시스템 전체 PATH 및 MANPATH 변수를 상속하지 않습니다!사용자가 X 할 수 있도록 를 사용자의 Mac OS X GUI에서 .~/.MacOSX/environment.plist QApple 기술 Q&A QA1067)

하여 다음명여동합다니기화사용하을령을 합니다.environment.plist와 함께/etc/paths:

defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"

$PATH에는 변는또영받습다니을향한도 .path_helper그것은 차례로 그것을 이용합니다./etc/paths에 있는 파일 및 /etc/paths.d.

자세한 설명은 PATH 및 Leopard(2008-11)의 기타 환경 문제에서 확인할 수 있습니다.

/etc/launchd.conf는 OS X v10.10(Yosemite), OS X v10.11(El Capitan), macOS v10.12(Sierra) 또는 macOS v10.13(High Sierra)에서 사용되지 않습니다.


launchctl page 파일:

/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.

다른 질문 답변에 설명된 방법은 (재부팅 후) 나에게 적용됩니다. 독 또는 Spotlight에서 실행된 응용 프로그램은 내가 설정한 환경 변수를 상속합니다.~/Library/LaunchAgents/my.startup.plist(저의 경우, 저는 설정이 필요했습니다.LANG로, 그리고.en_US.UTF-8Sublime Text 인의경우그플러)우경▁sub

정말 쉽고 빠르게 해냈습니다.먼저 터미널에서 ~/.bash_profile을 생성합니다.

touch .bash_profile

그리고나서

open -a TextEdit.app .bash_profile

더하다

export TOMCAT_HOME=/Library/Tomcat/Home

문서를 저장하면 완료됩니다.

사용에만 됩니다.source파일을 사용하여 환경 변수를 내보냅니다.

예:

다음과 같은 파일을 만들 수 있습니다.

export bim=fooo
export bom=bar

이 파일을 다음으로 저장bimbom.env그리고 합니다.source ./bimbom.evVoila, 당신은 당신의 환경 변수를 가지고 있습니다.

다음을 사용하여 확인:

echo $bim

간단합니다.

~/.profile을 편집하고 변수를 다음과 같이 배치합니다.

vim ~/.profile

파일 입력:

MY_ENV_VAR=값

  1. 저장( :wq )

  2. 터미널을 다시 시작합니다(종료하고 다시 엽니다.

  3. 문제가 없는지 확인합니다.

echo $MY_ENV_VAR

값을 매기다


수정의 에는 사수경우의정자용을 합니다.~/.profile당신이 나열한 것들 중에서.다음 링크는 Bash에서 다른 파일을 읽는 경우를 설명합니다.

http://telin.ugent.be/ ~httppens/httpal/httprc_and_http:/http.

GUI 애플리케이션에 대한 환경 변수를 설정하려면 ~/가 필요합니다.MacOSX/environment.plist 파일

글쎄, 나는 확신할 수 없습니다./etc/paths그리고.~/.MacOSX/environment.plist파일입니다. 새것들입니다.

하지만 바쉬와 함께라면, 당신은 그것을 알아야 합니다..bashrc모든 새로운 셸 호출과 함께 실행됩니다..bash_profile시작할 때 한 번만 실행됩니다.

Mac OS X에서 이런 일이 얼마나 자주 발생하는지 모르겠습니다.윈도우 시스템이 모든 것을 시작하면서 구분이 무너졌다고 생각합니다.

개인적으로, 저는 혼란을 제거합니다..bashrc파일에 필요한 모든 정보를 저장한 후 다음 작업을 수행합니다.

ln -s .bashrc .bash_profile

제안된 접근 방식 외에 한 가지 주목해야 할 점은 OS X 10.5(Leopard)에서 최소한 다음과 같은 변수가 설정되어 있다는 것입니다.launchd.conf만 든설 병다니됩에서 설정한 됩니다..profile은 의은설유것같다습니효할의 할 것 .~/.MacOSX/environment.plist저도요, 하지만 저는 확인하지 못했습니다.

Mac OS에서 PATH 환경 변수 설정

터미널 프로그램을 엽니다(기본적으로 응용프로그램/유틸리티 폴더에 있음).다음 명령을 실행합니다.

touch ~/.bash_profile; open ~/.bash_profile

그러면 기본 텍스트 편집기에서 파일이 열립니다.

예를 들어 Android SDK의 경우:

Android SDK 플랫폼-tools 및 도구 디렉토리에 경로를 추가해야 합니다.이 예에서는 "/Development/android-sdk-macosx"를 SDK가 설치된 디렉토리로 사용합니다.다음 행을 추가합니다.

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

파일을 저장하고 텍스트 편집기를 종료합니다..bash_profile을 실행하여 PATH를 업데이트합니다.

source ~/.bash_profile

이제 터미널 프로그램을 열 때마다 PATH에 Android SDK가 포함됩니다.

아주 간단합니다..profile(vi, nano, Sublime Text 또는 기타 텍스트 편집기) 파일.당신은 그것을 에서 찾을 수 있습니다.~/디렉토리(사용자 디렉토리) 및 다음과 같이 설정됩니다.

export MY_VAR=[your value here]

Java 홈의 예:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

저장하고 터미널로 돌아갑니다.

다음을 사용하여 다시 로드할 수 있습니다.

source .profile

또는 터미널 창을 닫고 엽니다.

여기에는 두 종류의 조개가 놀고 있습니다.

  • 비로그인: .bashrc는 Bash의 새 복사본을 시작할 때마다 다시 로드됨
  • 로그인: .profile은 로그인하거나 Bash에 로드하여 로그인 셸로 사용하도록 명시적으로 지시하는 경우에만 로드됩니다.

Bash를 하여 파일을 하는 것입니다. Bash와 함께, 파일..bashrc상호작용적이고 비상호작용적인 셸에 의해서만 읽히고, 당신은 사람들이 종종 로딩한다는 것을 알게 될 것입니다..bashrc.bash_profile이 한계를 극복하기 위해.

이제 기본적인 이해를 마쳤으므로 설정 방법에 대해 살펴보겠습니다.

  • .profile: 존재하지 않는 파일을 만듭니다.거기에 PATH 설정을 넣으십시오.
  • .vmsrc: 존재하지 않는 경우 생성합니다.모든 별칭과 사용자 지정 방법을 거기에 넣습니다.
  • .vmx_profile: 존재하지 않는 경우 생성합니다.거기에 다음을 넣으세요.

.vmdk_file:

#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc  # Get Aliases and Functions
#

로그인 셸

/etc/profile

파일의 합니다./etc/profile루트 권한으로 작업하는 사용자는 이 파일을 설정하여 Bash를 실행하는 사용자의 시스템 전체 기본 특성을 설정할 수 있습니다.

.bash_profile
.bash_login
.profile

은 다음껍다찾습다니을음은질다▁for니▁looks찾습▁next▁shell를 찾습니다.~/.bash_profile,~/.bash_login,그리고.~/.profile(~/는 home directory의 단축형입니다.) 이 순서대로 검색된 파일 중 첫 번째 파일에서 명령을 실행합니다. 중 하여 다음파 하명입에설력기여있수다에 할 수 ./etc/profile가상 터미널에서 실행되는 셸은 이러한 파일의 명령을 실행하지 않습니다.

.bash_logout

때 는 아웃는때에명실령행의 합니다.~/.bash_logout파일. 이 파일에는 임시 파일을 제거하는 명령과 같이 세션 후 정리하는 명령이 들어 있습니다.

대화형 비로그인 셸

/etc/bashrc

호출되지는 bash가 됩니다.~/.bashrc는 파일/etc/bashrc이 설정을 사용하면 루트 권한으로 작업하는 사용자가 비로그인 배시 셸에 대한 시스템 전체의 기본 특성을 설정할 수 있습니다.

.bashrc

shell은 명실다셸다령 합니다.~/.bashrc 로그인 의 시작 입니다. 일반적으로 다음과 같은 로그인 셸의 시작 파일.bash_profile 파일을 셸 모두 에서합니다..bashrc.

하면명령가에 있는 .bashrc할 수 , 하는 명령을 러여 번 실 행 될 수 상 내 변 은 변 낸 보 추 수 수 좋 다 니 것 습 셸 서 입 명 브 이 는 하 력 을 령 를 는 하에 것이 ..bash_profilejava.

언급URL : https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x

반응형