Nach vielen Versuchen mit verschiedenen Optionen schließe ich:
Gibt es eine einheitliche Möglichkeit , die PATH
für Anwendungen festzulegen, die mit verschiedenen Mitteln (wie Shell-Skript, Finder und Spotlight) gestartet wurden? Ja und nein:
- Nein : Das Festlegen
PATH
von Shell-Startskripten (z. B. .bashrc
) funktioniert nur für Apps, die von Shells gestartet werden.
- Nein : Die Einstellung
PATH
für den aktuellen launchd
Prozess über launchctl setenv PATH <...>
funktioniert bei mir überhaupt nicht.
- Ja : Einstellung
PATH
in /etc/launchd.conf
(und Neustart des Systems) wird die entsprechende machen PATH
sichtbar in Anwendungen von Spotlight, Dock und Finder und anschließend (lokal) Schalen gestartet.
- Nein : Remotely aufgerufen Schalen haben nicht erben die Umwelt. (Siehe ... warum erben Remote-Shells über ssh NICHT die Umgebung .. )
Hinweise zum Aufbau von Muscheln:
Für die korrekte Funktion in lokalen Shells ist es wichtig, die Verwendung von auszuschalten/usr/libexec/path_helper
, da die Standardpfade in /etc/paths
die Reihenfolge der Pfade in ändern können PATH
. **
Um Remote- Shells aufzunehmen, müssen Sie die launchd
Umgebung erneut in die Shell importieren . Verwenden Sie so etwas in Ihrem .bashrc
:
# the vexatious path stuff
eval $(launchctl export)
Die unglücklichen Folgen des gesamten Problems sind:
- Es gibt keine Möglichkeit, diese einheitlichen Einstellungen pro Benutzer festzulegen. (
~/.launchd.conf
funktioniert nicht.)
- Keine einfache Möglichkeit, den PATH aus verschiedenen Quellen mithilfe von Techniken wie der Erweiterung des Home-Verzeichnisses et al.
/etc/launch.conf
funktioniert nicht für Shells, die remote über ssh angemeldet sind (ich gehe davon aus, dass dassshd
seine von seinem übergeordnetenlaunchd
Shell geerbte Umgebung nicht an die untergeordnete Shell weitergibt). - Ich werde die Antwort entsprechend bearbeiten.eval "$(launchctl export)"
./etc/launchd.conf
besteht darin, einfach auszuführensudo -e /etc/launchd.conf
(wenn Sie mit vi vertraut sind) oderEDITOR=nano sudo -e /etc/launchd.conf
(wenn Sie einen nicht modalen Editor bevorzugen).Wenn Sie die vorherige Antwort erweitern , um den Pfad zu ändern
/etc/launchd.conf
, müssen Sie Folgendes tun.Stellen Sie sicher, dass Sie über Administratorrechte verfügen.
Erstellen Sie eine neue Textdatei mit dem folgenden Inhalt, der Ihren Anforderungen entspricht:
Speichern Sie es in Ihrem Home-Verzeichnis als
launchd.conf
.Öffnen Sie Terminal.app (oder Ihren bevorzugten Ersatz) und geben Sie Folgendes ein:
sudo mv ~/launchd.conf /etc
Abhängig von Ihrer vorherigen Verwendung des
sudo
Befehls wird möglicherweise die kurze Meldung "Seien Sie vorsichtig, was Sie tun" angezeigt. In beiden Fällen müssen Sie jedoch Ihr Kennwort eingeben. Der Befehl verschiebt lediglich die Datei in das/etc
Verzeichnis, auf das beispielsweise beim Speichern einer Datei in TextEdit nicht direkt zugegriffen werden kann.sudo
(kurz für "Super User DO") wird verwendet, da Administratorrechte zum Schreiben in dieses Verzeichnis erforderlich sind.Starte deinen Computer neu.
Und du solltest fertig sein. Viel Glück!
quelle
launchd.conf
, sondern darum, wie alle Anwendungen auf einheitliche Weise dieselbe PATH-Variable erhalten.PATH
ich die Einstellungen für meine GUI-AppsSie können https://github.com/ersiner/osx-env-sync ausprobieren.
Es verarbeitet sowohl Befehlszeilen- als auch GUI-Apps aus einer Hand . Und es funktioniert mit der neuesten Version von OS X (Yosemite).
quelle
launchd
System. Ihre Lösung weist dieselben Probleme auf wie in der akzeptierten Antwort angegeben.