Wie erstelle ich terminalsitzungsunabhängige Umgebungsvariablen unter OS 10.10?

Ich habe Mortimers Antwort hier gelesen https://stackoverflow.com/questions/25385934/setting-environment-variables-via-launchd-conf-no-longer-works-in-os-x-yosemite und diese Datei in /Users/ hinzugefügt. MyName/Library/LaunchAgents mit dem Namen „environment.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 GRADLE_HOME /Applications/gradle-2.0 
    launchctl setenv JAVA_HOME    
/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
    </string>

  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Habe meinen Laptop neu gestartet, ein Terminal geöffnet und echo $GRADLE_HOME ausgeführt, aber es ist immer noch leer. Wie lege ich eine Umgebungsvariable fest, die während Terminalsitzungen in Mac OS 10.10 persistent ist?

Ich verstehe weder plists noch , launchdund ich habe das Yosemite-'Upgrade' vermieden, aber die Nutzlast von ProgramArgumentssieht für mich komisch aus: Wenn die mehrzeilige Zeichenfolge als Argument an "sh" übergeben wird, woher soll sh das wissen es sollen zwei launchtctls ausgeführt werden?
vielleicht habe ich nicht neu gestartet, wie ich dachte; Ich habe heruntergefahren und eingeschaltet, jetzt funktioniert es.
Was passiert, wenn Sie die Zeile löschen launchctl setenv GRADLE_HOME /Applications/gradle-2.0(also nur ein Befehl an sh übergeben wird)?
Posten Sie das als Antwort: Es könnte für jemanden nützlich sein, der das nicht so richtig gemacht hat wie Sie.

Antworten (1)

Computer herunterfahren und neu starten. Öffnen Sie das Terminal und geben Sie echo $ENV_VAR ein und Sie sollten den von Ihnen definierten Wert sehen.