Über Finder gestartete Apps scheinen den in festgelegten Pfad nicht zu respektieren .bash_profile
. Wenn ich also versuche, Code von einer IDE (Intellij) auszuführen, habe ich keinen Zugriff mehr auf Programme in /usr/local/bin
, die normalerweise meinem Pfad im Terminal hinzugefügt werden.
Anscheinend war .MacOSX/environment.plist
dies der Weg , aber in Lion funktioniert es nicht mehr.
Wie kann ich die PATH
für Finder gestarteten Anwendungen einstellen ?
$PATH
für den Fall, dass es darauf ankommt.)Antworten:
Wenn Sie mit 10.7 und nicht mit 10.8 arbeiten, funktioniert die folgende Lösung gut:
Ich hatte das gleiche Problem mit Eclipse, aber jetzt habe ich zB folgendes zu meinem hinzugefügt
.bash_profile
und dann hat es funktioniert.Wenn Sie den ursprünglichen Pfad beibehalten möchten, verwenden Sie ihn
stattdessen (oder nur
launchctl setenv PATH /my/new/path:$(launchctl getenv PATH)
).Hinweis: Das Ändern des Startpfads wird erst wirksam, wenn das Dock "neu gestartet" wird. Ein neuer Dock-Vorgang wird automatisch gestartet, nachdem der aktuelle Vorgang mit dem folgenden Befehl beendet wurde:
quelle
set|grep PATH
von dort wird immer zurückgegebenPATH=/usr/bin:/bin:/usr/sbin:/sbin
launchctl
:osascript -e 'tell app "Dock" to quit'
. Das schien es für mich zu regeln.Um Ihre Frage zu Ihrem 'neuen' Problem zu beantworten, habe ich mich entschlossen, eine andere Antwort zu schreiben - weil es einfacher ist, dies anhand von Beispielen zu erklären.
Eine Möglichkeit, die Umgebungsvariablen beim Starten des Tools (IDE) Ihrer Wahl zu laden, besteht darin, dass dies mit Eclipse möglich ist. Ich denke, Ihr Tool (IDE) muss ebenfalls eine ähnliche Struktur aufweisen.
Wie es in Eclipse gemacht werden kann - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set
(etwas über die Umgebungsvariablen neu geschrieben)
Erstellen Sie eine leere Textdatei mit dem Namen "eclipse.sh" im Eclipse-Anwendungspaketverzeichnis
/Applications/eclipse/Eclipse.app/Contents/MacOS
Öffnen Sie die Datei eclipse.sh in einem Texteditor und geben Sie den folgenden Inhalt ein:
Im Terminal setzen Sie das Executable-Flag des Shell-Skripts eclipse.sh, dh:
chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh
Öffnen Sie die Eclipse.app Info.plist und ändern Sie den Wert für den Schlüssel CFBundleExecutable von eclipse in eclipse.sh.
MacOS X erkennt nicht automatisch, dass sich die Info.plist von Eclipse.app geändert hat. Daher müssen Sie die Aktualisierung der LaunchService-Datenbank im Terminal mit dem Befehl lsregister erzwingen:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
Wenn Sie Eclipse.app das nächste Mal über das Dock oder den Finder starten, sollten die Umgebungsvariablen festgelegt werden.
quelle
Unter OS X 10.10 Yosemite habe ich folgenden Befehl verwendet:
Beachten Sie, dass er den Startpfad für alle Benutzer festlegt . Dies funktionierte gut für meinen Anwendungsfall. Beachten Sie, dass Sie aufgefordert werden, Ihren Computer neu zu starten, damit die Effekte wirksam werden.
quelle
sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
starten.environment.plist
meisten Fällen müssen Sie sich nicht damit anlegen .Auf Mountain Lion hat all das
/etc/paths
und die/etc/launchd.conf
Bearbeitung keine Auswirkung!Apples Entwicklerforen sagen:
Also habe ich die App direkt bearbeitet
Info.plist
(Rechtsklick auf "AppName.app" (in diesem Fall SourceTree) und dann "Show package contents
")und fügte ein neues Schlüssel / Dikt-Paar hinzu:
(siehe: LaunchServicesKeys-Dokumentation bei Apple )
jetzt benutzt die App (in meinem Fall SourceTree) den angegebenen Pfad und arbeitet mit git 1.9.3 :-)
PS: Natürlich müssen Sie den Pfadeintrag an Ihre spezifischen Pfadanforderungen anpassen.
quelle
/etc/launchd.conf
. Vermutlich auch wenn die Regeln nicht feststellen , dass Anwendungen sollten ihre Info.plist Dateien für Pfade verwenden, könnten sie noch andere Dateien verwenden -/etc/launchd.conf
,/etc/paths/
oder/etc/paths.d/*
, oder `~ / .MacOSX / environment.plist. Ist es dann sicher zu sagen, dass in der Praxis Pfade für GUI-Apps in Mountain Lion in jeder dieser Dateien festgelegt werden könnten?/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
wie in einer anderen Antwort angegeben aus, nachdem Sie plist geändert haben, und 2. fügen Sie dort den vollständigen Pfad hinzu . Sie können den vorhandenen PATH nicht wie in Ihren Profilskripten verwenden.lsregister
Befehl auszuführen , wie von @JaakL angegeben.On Mountain Lion (10.8.4)
$PATH
wird irgendwie speziell behandelt.launchctl setenv PATH /your/path:/here
hat keine Auswirkungen auf die$PATH
Instanzen in Terminal.app oder Emacs.app, die anschließend über das Dock oder den Finder gestartet werden (launchctl setenv SPONG foo
funktioniert jedoch einwandfrei ). Funktioniert auch$HOME/.launchd.conf
nicht./etc/launchd.conf
ist der einzige Weg, den ich gefunden habe, um PATH überall richtig einzustellen. Leider kann man Envars wie$HOME
dort nicht verwenden , so dass alle User auf meinem Laptop/Users/nb/bin
auf ihren haben$PATH
. Das bin nur ich, also ist es mir egal.quelle
PATH
Ihnen festgelegten Wert aufnimmt. Wenn Sie jedoch ein neues Terminal erstellen, wird eine Anmeldeshell gestartet, die - wenn Sie bash verwenden - auf den von zurückgegebenen Wert/etc/profile
initialisiert wird . Wenn Sie Shell> New Command… wählen und ausführen (nicht in einer Shell), sollten Sie feststellen, dass dies der Wert ist, den Sie über launchd festgelegt haben.PATH
/usr/libexec/path_helper
env
PATH
Versuchen Sie, den Pfad in Ihrem ~ / .profile oder ~ / .bash_profile oder ~ / .zprofile (für zsh) festzulegen. Dies funktionierte für mich mit VimR - es las nicht den PFAD, als es vom Dock aus gestartet wurde, aber es funktionierte, als es vom Terminal aus gestartet wurde. Ich lief übrigens unter OSX 10.11.
Ich kann das nicht gut genug handhaben, um Ihnen eine gute Erklärung zu geben, warum es funktioniert. Es gibt viele Online-Erklärungen zu den verschiedenen Konfigurationsdateien und deren Funktion: https://stackoverflow.com/questions/415403/ Was ist der Unterschied zwischen bashrc-bash-Profil und Umgebung?
Eine ähnliche Diskussion finden Sie auch hier: https://stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/ 24542893 # 24542893
quelle
Unter Mac OS X 10.8.4, Mountain Lion, enthält die Pfadumgebung die in dieser Datei aufgelisteten Pfade:
Sie können diese Datei mit einem Befehlszeilentool bearbeiten, z. B.
vim
mit dem folgenden Befehl:quelle