Wie ändere ich die Umgebungsvariable PATH in OS X 10.8 Mountain Lion, das für GUI-Anwendungen sichtbar ist? [Duplikat]

14

Ich habe alle Methoden ausprobiert, von denen ich gehört habe, um Umgebungsvariablen unter OS X 10.8 festzulegen, aber keine davon scheint zu funktionieren.

Führen Sie zum Testen ein Bash-Skript in einer GUI-Anwendung wie Eclipse oder IntelliJ IDEA aus.

#!/bin/bash
set|grep PATH

Dinge, die ich getestet habe und die auch nach dem Neustart nicht funktionieren :

  • /etc/paths und /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (Binärpliste wie empfohlen)
  • Über launchctl setenv PATH $PATHdie Befehlszeile sollte der PATH für GUI-Apps zumindest für die aktuelle Sitzung aktualisiert werden. Ratet mal, keine Veränderung.

Es scheint, dass PATH immer PATH=/usr/bin:/bin:/usr/sbin:/sbinfür GUI-Apps ist.

Sorin
quelle
Sind Sie mit einer Lösung einverstanden, die den Bash-Pfad festlegt, oder müssen Sie den Wert von launchd für den Basispfad für alle Prozesse wirklich ändern?
bmike
Ich muss den von GUI-Apps verwendeten PATH für terminal / bash / ändern ... Ich habe bereits eine Reihe von funktionierenden Lösungen.
Sorin
Ich weiß nicht, warum Eclipse und andere nicht nur Laufzeitumgebungsvariablen unterstützen , sodass sich jeder Java-Entwickler auf dem Mac nicht darum kümmern muss, in jedem Projekt den Pfad oder die Quelle für die gewünschten Variablen festzulegen.
bmike
antwort
Flori

Antworten:

8

Bei Mountain Lion /etc/launchd.confsollten Sie den Pfad für die GUI-Anwendungen festlegen. Denken Sie daran, es ist keine Skriptdatei. Es werden nur launchctlBefehle unterstützt , daher sollten Sie Folgendes schreiben:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

Beachten Sie auch, dass es keine Ersetzungen von Shell-Umgebungsvariablen (wie $PATH) unterstützt, sodass Sie jeden Pfad festlegen müssen, den Sie einschließen möchten. Es ist eine gute Idee, die ursprünglichen Pfade, die Sie erwähnt haben, beizubehalten ( /usr/bin:/bin:/usr/sbin:/sbin).

Sie müssen nach dem Ändern (oder Erstellen) der Datei einen Neustart durchführen, damit die Änderungen wirksam werden.

João Campos
quelle
Dies funktionierte für mich in 10.8.2, um einen PFAD festzulegen, der mit Keyboard Maestro verwendet werden konnte.
TJ Luoma
Die Manpage besagt, dass Sie $ HOME / .launchd.conf verwenden können, aber das hat bei mir nicht funktioniert. Verwenden von /etc/launchd.conf hat getan. Ich bin auf 10.8.4
pedz
Es funktioniert nicht für mich:-bash: setenv: command not found
Colas
Wer wie Colas verwirrt war, setenvist ein launchctlBefehl, also benutzt man ihn gerne launchctl setenv.
Jon Shier
3

Es funktioniert, wenn Sie die GUI-App vom Terminal aus aufrufen:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

Bildbeschreibung hier eingeben

Nicht wirklich schön oder bequem, aber es macht den Job, wenn nötig.

nohillside
quelle
In Kürze NEIN WEG. Ich bin dazu nicht bereit, es wird nur manchmal funktionieren. Die App kann auch gestartet werden, wenn Sie auf eine Datei klicken.
Sorin
2
Wie ich sagte , dass es nicht wirklich schön ist , aber arbeiten kann , bis Apple das Problem behebt (weil es sollte mit launchctl möglich).
Nohillside
2

Ich habe mir eine andere Lösung ausgedacht , inspiriert von Patrix , die hoffentlich etwas weniger schmerzhaft ist. Öffnen Sie Automator, wählen Sie eine Anwendung als Ziel aus und wählen Sie Execute Shell script(oder wie auch immer es heißt, auf Deutsch heißt es "Shell-Skript ausführen", wie oben zu sehen ist) als Aktion. Geben Sie im Skript einfach Folgendes ein

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Speichern Sie dann das Ganze, wo immer Sie möchten, und öffnen Sie stattdessen die erstellte "Automator-Anwendung" , wenn Sie YourApplicationHere ausführen müssen .

Ich habe dies mit Terminalals YourApplicationHere getestet und gesehen, launchctl exportdass FOO in der Tat auf Bar gesetzt war . Ich hoffe, dass es auch für andere funktioniert.

Wenn Sie diese Lösung für Ihre Umgebungsvariablen verwenden, können Sie statt der Eingabe launchctlim Shell-Skript einfach aufrufen /Users/Shared/conflaunchd.sh(was Sie zuerst zusammen mit der Datei, die die Variablen beschreibt, neu zusammenstellen müssen).

Percival Ulysses
quelle
-1

Angeblich launchctlbietet PATHGUI Apps an. Um den Pfad des Shell-Pfads festzulegen, fügen Sie Ihrer Shell-RC-Datei Folgendes hinzu, nachdem Sie den Pfad festgelegt haben:

launchctl setenv PATH $PATH
ismail
quelle
1
Leider funktioniert das nicht :-(
nohillside
Wir lassen Antworten zu, die sich nach Treu und Glauben bemühen, die Frage zu beantworten. Wir lassen sogar falsche Antworten zu und lassen die Abstimmung für die Richtigkeit sprechen. Kommentieren, ohne es persönlich zu machen, ist der beste Weg, ein Loch in ein fehlerhaftes Argument zu stechen, anstatt die Versuche zu entmutigen, zu antworten.
bmike