Ich habe ein grundlegendes Verständnis dafür, wie $ PATH festgelegt werden kann. Gibt es jedoch eine Dokumentation, in der vollständig beschrieben wird, woher Mac OS alle Pfade bezieht, die an $ PATH angehängt werden? Ich kenne Dinge wie /etc/profile
, /etc/paths
und /etc/profile.d
, aber gibt es andere Skripte, die sich letztendlich auf den Wert von $ PATH auswirken? Ich bin auch nicht sehr vertraut zwischen den Nicht-Login- und Login-Shells ( .bashrc
, .bash_profile
), aber ich bin mir der grundlegenden Unterschiede bewusst.
/etc/profile
es sich um ein Skript handelt, das hauptsächlich von Bash verwendet wird? Ich habe keine Erfahrungen mit anderen Muscheln, aber ich gehe davon aus, dass sie einer anderen Struktur folgen./etc/profile
wird von den meisten (alle? Nicht 100% sicher) Muscheln verwendet. Deshalb ist es eine gute Wahl, Dinge, die Sie wollen, überall hinein zu legen, wie z. B. PFADE. Bash liest.bash_
Dateien, während Zsh beispielsweise.zshrc
zusätzlich zu anderen liest . Es kommt auf die Schale an.path_helper
wird nicht für interaktive Nicht-Login-Shells (oder nicht interaktive Shells) aufgerufen. Es wird eigentlich für interaktive Login-Shells aufgerufen/etc/profile
.Die Pfade in
/etc/paths
und/etc/paths.d/*
werden normalerweisePATH
von path_helper hinzugefügt .path_helper
wird von ausgeführt/etc/profile
, wird also ausgeführt, wenn bash als interaktive Anmeldeshell aufgerufen wird, nicht jedoch, wenn bash als nicht angemeldete Shell oder nicht interaktive Shell aufgerufen wird./etc/paths
enthält/usr/local/bin
standardmäßig am Ende und/etc/paths.d/
ist standardmäßig leer.Terminal und iTerm 2 öffnen standardmäßig neue Shells als Login-Shells, und die Shell, die beim SSH auf Ihrem Computer geöffnet wird, ist auch eine Login-Shell. Viele Terminalemulatoren auf anderen Plattformen
tmux
und der Shell-Modus in Emacs öffnen jedoch neue Shells als Nicht-Login-Shells.Ich habe diese Zeile hinzugefügt zu
/etc/launchd.conf
:setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Es ändert den Wert des
PATH
Root-Startprozesses. Der Wert wird von allen anderen Prozessen geerbt, einschließlich der pro Benutzer gestarteten Prozesse. Sie können Änderungen anwenden,/etc/launchd.conf
indem Sie neu starten oderlaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
Prozesse ausführen und neu starten.Wird unter OS X
~/.profile
nicht gelesen, wenn Sie sich grafisch anmelden. Wenn beides~/.bash_profile
und~/.profile
existiert, liest bash auch nicht~/.profile
.~/.MacOSX/environment.plist
hat in 10.8 aufgehört zu arbeiten.quelle