
Ich hatte Probleme, eine App unter OS X Mavericks zum Laufen zu bringen. Endlich gelang es mir, sie zum Laufen zu bringen, indem ich in das .app-Bundle eindrang und das Shell-Skript direkt ausführte. Es scheint, dass JAVA_HOME festgelegt werden musste. Also legte ich es in meinem .profile in der Shell fest und alles funktionierte einwandfrei.
Wenn ich jedoch einfach auf das Symbol im Dock klicke, wird es nicht ausgeführt. Ich vermute, das liegt daran, dass JAVA_HOME nicht global festgelegt ist. Da ich die App nicht direkt von der Shell aus ausführe, weiß OS X nicht, was JAVA_HOME ist. Es sucht einfach weiter.
In früheren Versionen von OS X konnten Umgebungsvariablen für GUI-Apps anscheinend festgelegt werden, indem sie einfach zu /etc/launchd.conf hinzugefügt wurden. Diese Datei scheint in Mavericks nicht zu existieren. Wie kann ich eine globale Umgebungsvariable festlegen, die für GUI-Apps in Mavericks funktioniert?
Antwort1
/etc/launchd.conf
hat es standardmäßig nie gegeben, funktioniert aber in 10.9 immer noch.
- Führen Sie beispielsweise aus
sudo nano /etc/launchd.conf
. - Fügen Sie eine Zeile wie hinzu
setenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
. (Ich weiß allerdings nicht,JAVA_HOME
auf was es eigentlich eingestellt werden soll.) - Starten Sie die Prozesse entweder neu oder führen Sie sie aus
launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
und starten Sie sie neu.
launchctl export
druckt vom Benutzer-Launchd-Prozess exportierte Variablen und sudo launchctl export
druckt vom Root-Launchd-Prozess exportierte Variablen.
Mit dieser Methode kann auch ein Standardpfad festgelegt werden. Ich habe beispielsweise diese Zeile hinzugefügt /etc/launchd.conf
:
setenv PATH /Users/lauri/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
(Ich habe /Users/lauri/bin
anstelle von verwendet, ~/bin
da dies für Programme ~/bin
gilt /var/root/bin
, die als Root ausgeführt werden.)
Antwort2
Launchd.conf funktioniert/ist seit Mac OS 10.10 nicht mehr verwendbar.
Der richtige Weg, dies jetzt zu erreichen, sind LaunchAgent-Skripte, die beim Start geladen werden. Da diese Skripte furchtbar mühsam sind (persönliche Meinung :), bevorzuge ich die Verwendung von .bash_profile und das automatische Erstellen/Aktualisieren dieser Skripte.
Versuchen Sie diese SO-Antwort, um dies einfacher von Ihrem .bash_profile aus zu erreichen. Hoffentlich erspart Ihnen dies die paar Stunden, die ich damit verbracht habe, es (wieder) für meinen neuen Mac M2 herauszufinden