J'ai une compréhension de base sur la façon dont $ PATH peut être défini, mais existe-t-il une documentation qui décrit entièrement où Mac OS obtient tous les chemins d'accès qui sont ajoutés à $ PATH? Je suis au courant des choses comme /etc/profile
, /etc/paths
et /etc/profile.d
, mais y at - il d' autres scripts qui affectent éventuellement la valeur de $ PATH? Je ne suis pas non plus très familier entre les shells sans connexion et les shells de connexion ( .bashrc
, .bash_profile
), mais je suis conscient des différences de base.
/etc/profile
script est principalement utilisé par bash? Je n'ai pas d'expérience avec d'autres obus, mais je suppose qu'ils suivent une structure différente?/etc/profile
est utilisé par la plupart (tous? Pas sûr à 100%) des obus. C'est pourquoi c'est un bon choix pour mettre des choses dans ce que vous voulez partout, comme des CHEMINS. Bash lit des.bash_
fichiers tandis que Zsh par exemple lit.zshrc
en plus des autres. Cela dépend de la coquille.path_helper
n'est pas appelé pour les shells interactifs sans connexion (ni les shells non interactifs). Il s'agit en/etc/profile
fait de shells de connexion interactifs .Les chemins d'accès
/etc/paths
et/etc/paths.d/*
sont généralement ajoutésPATH
par path_helper .path_helper
est exécuté à partir de/etc/profile
, il est donc exécuté lorsque bash est appelé en tant que shell de connexion interactif, mais pas lorsque bash est appelé en tant que shell sans connexion ou shell non interactif./etc/paths
contient/usr/local/bin
à la fin par défaut et/etc/paths.d/
est vide par défaut.Terminal et iTerm 2 ouvrent de nouveaux shells en tant que shells de connexion par défaut, et le shell ouvert lorsque vous vous connectez à votre ordinateur est également un shell de connexion. De nombreux émulateurs de terminaux sur d'autres plates-formes
tmux
et le mode shell dans Emacs ouvrent de nouveaux shells en tant que shells sans connexion.J'ai ajouté cette ligne à
/etc/launchd.conf
:setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Il change la valeur du
PATH
processus root launchd. La valeur est héritée par tous les autres processus, y compris les processus launchd par utilisateur. Vous pouvez appliquer des modifications/etc/launchd.conf
en redémarrant ou en exécutantlaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
et relançant des processus.Sous OS X,
~/.profile
n'est pas lu lorsque vous vous connectez graphiquement. Si les deux~/.bash_profile
et~/.profile
existent, bash ne lit pas non~/.profile
plus.~/.MacOSX/environment.plist
a cessé de fonctionner en 10.8.la source