Quels scripts de démarrage, dans l'ordre dans lequel ils sont appelés, définissent la variable PATH
lors de l'ouverture d'un shell BASH dans Terminal.app sous OS X?Comment la variable d'environnement PATH est-elle définie lors de l'ouverture d'un shell BASH dans Terminal.app sous OS X?
3
A
Répondre
7
J'ai trouvé le coupable. La sauce secrète était /usr/libexec/path_helper
il regarde dans le fichier /etc/paths
et dans le répertoire /etc/paths.d/
.
Premières bash
sources /etc/profile
qui exécute le code suivant:
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
# The above line is the secret sauce, so to say...
# First is adds default PATH values from the file /etc/paths
# Then all files in the /etc/paths.d/ directory are read and directories listed
# in each file (one per line) are appended to PATH
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
Suivant bash
cherche des ~/.bash_profile
, ~/.bash_login
et ~/.profile
.
Listing ces étapes sur, PATH
est construit comme suit:
- répertoires dans le fichier
/etc/paths
sont ajoutés àPATH
- répertoires répertoriés dans les fichiers dans le répertoire
/etc/paths.d/
sont en annexe-PATH
- Note , que ceux-ci sont ajoutés au lieu d'être ajoutés. - Divers
PATH={DIR_2_ADD}:"${PATH}"
déclarations dans mes dossiers~/.bash_profile
et~/.bashrc
sont PREPENDPATH
variables d'environnement peuvent également être héritées dans ce contexte, j'imagine. Il pourrait être plus loin dans la chaîne de processus à moins d'être réinitialisé (pas simplement ajouté à). Mais le plus proche que je viens d'utiliser OS X est un MacBook mort assis sur une étagère. –
Ce qui n'est pas totalement pertinent, mais peut-être utile, c'est que vous pouvez apporter une modification persistante au PATH vu par * toutes * les applications en utilisant une commande comme 'launchctl setenv PATH'. – rptb1