Ich möchte an die globale Umgebungsvariable PATH unter OS X anhängen, damit alle Benutzer-Shells und GUI-Anwendungen dieselbe PATH-Umgebung erhalten.
Ich weiß, dass ich in Shell-Startskripten an den Pfad anhängen kann, aber diese Einstellungen werden nicht von GUI-Anwendungen übernommen.
Die einzige Möglichkeit, die ich bisher gefunden habe, besteht darin, die Umgebungsvariable PATH in /etc/launchd.conf neu zu definieren :
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
Ich konnte keinen Weg finden, um tatsächlich an PATH anzuhängen launchd.conf
.
Ich bin ein bisschen besorgt über diese Methode, aber bisher ist dies das einzige, was funktioniert. Gibt es einen besseren Weg?
Antworten:
Die GUI-Informationen von palmer sind korrekt, aber es gibt eine wartbarere Möglichkeit, den von der Shell angezeigten Pfad zu ändern. Wie Mediaslave sagte , können Sie bearbeiten
/etc/paths
, aber noch besser können Sie eine Textdatei/etc/paths.d/
mit einem Pfad darin ablegen , und alle Shells werden den Pfad korrekt konstruieren.Zum Beispiel auf meinem System:
quelle
X11
(weniger schmerzhaft als sich komplett abzumelden ). Ich habe es nicht ausprobiertTerminal
.$PATH
./etc/launchd.conf
Die
launchd.conf
Datei ist ** die einzige Komplettlösung , die für alle Benutzer sowohl für Befehlszeilen- als auch für GUI-Anwendungen unter OS X 10.8 (Mountain Lion) und 10.9 (Mavericks) funktioniert .Hinzufügen
Im obigen Beispiel habe ich
/usr/local/bin
die Standardumgebungswerte für PATH hinzugefügt .Beachten Sie, dass es sich bei dieser Datei nicht um ein Skript handelt und Sie nicht die Möglichkeit haben, Ersetzungen zu verwenden. Damit diese angewendet werden, muss der Computer neu gestartet werden.
Denken Sie daran, alle anderen sind nur Teillösungen:
environment.plist
funktioniert nicht für Anwendungen, die über Spotlight gestartet wurden./etc/paths
- nur für Konsole/etc/csh.cshrc
oder/etc/bashrc
- nur für einige MuschelnDiese Antwort beruht auf der gleichen Frage Umgebung einstellen Variablen auf Mac OS X .
quelle
/etc/launchd.conf
.Sie müssen es Shell für Shell einstellen. Bash- und csh-ähnliche Shells verwenden nicht dieselbe Konfigurationsdatei und Syntax zum Anpassen von PATH.
Der Versuch, dies zu tun,
launchctl
funktioniert nicht, da Umgebungsvariablen beim Anmelden festgelegt werden. Sie existieren in Unix nicht systemweit außerhalb einer Shell-Sitzung.Also wirst du hinzufügen wollen
zu
/etc/csh.cshrc
undzu
/etc/bashrc
.Wenn Sie Umgebungsvariablen in GUI-Anwendungen verwenden möchten, ist dies komplizierter. Sie müssen eine
.MacOSX/environment.plist
Datei im Home-Verzeichnis jedes Benutzers erstellen . Das.MacOSX
Verzeichnis wird wahrscheinlich nicht standardmäßig vorhanden sein, daher müssen Sie es erstellen.Das Format der Datei ist wie folgt:
Weitere Informationen finden Sie auf der
environment.plist
Apple-Website .quelle
~/.MacOSX/environment.plist
Ansatz wird nicht mehr unterstützt und auf Benutzerebene gibt es keinen Ersatz. Systemweit können Sie/etc/launchd.conf
(und es gibt eine pro - *. App-Lösung) verwenden.Sie können Ihren globalen Pfad bearbeiten, indem Sie Zeilen zu
/etc/paths
einem Pfad pro Zeile hinzufügen .sudo nano /etc/paths
sollte dich dorthin bringen.quelle
Haben Sie sich die Manpage für das
path_helper
Befehlszeilendienstprogramm unter OS X angesehen? Ich habe eine etwas verwandte Frage zu SO beantwortet , die Sie vielleicht hilfreich finden.quelle
Ich bin mir nicht sicher, ob jemand die einfachste und eleganteste Art behandelt hat. Zumindest auf dem Mac OS X 10.6 (Snow Leopard).
Spielerisch mit dem
[/etc/|~/.]
von[profile|bashrc]
Dateien arbeiten kann, aber es ist so etwas wie ein Hack. Das/etc/paths.d/
Verzeichnis ist der richtige Weg:Erstellen Sie eine neue Datei mit dem Namen
*name*
(benennen Sie sie nur nicht mit einem Namen, der bereits vorhanden ist)/etc/paths.d/
mit einem Pfad pro Zeile:Dann füge hinzu
zu
profile
oderbashrc
, und Sie sollten gut zu gehen sein.quelle
*name*
? Oder meinst du nurname
?Ich bin nicht sicher, ob launchd dies akzeptiert, aber versuchen Sie Folgendes:
quelle
Ich bin mir nicht sicher , warum Sie verwenden würde ,
/etc/launchd.conf
im Gegensatz/etc/profile
- aber ich bin kein Experte in Mac OS X - Ich glaube , Sie, dass ich bin sicher , dass es funktioniert, aberlaunchd
ist die Mac OS X Implementierung / Ersatz fürinit
- Mac OS X verwirrt mich.Wie auch immer,
setenv PATH "$PATH:/more/paths:/and/more/paths"
wird funktionieren (tcsh), und das Äquivalent zur Bourn-Shell istexport PATH="$PATH:/more/paths:/and/more/paths"
- ich habe auch keine Ahnung, wielaunchd
es mit einer bestimmten Shell zusammenhängt.Ich glaube, ich habe mehr Fragen gestellt, als ich beantwortet habe =)
quelle