Je reçois quand j'echo $ PATH: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools
.
Je souhaite supprimer certains chemins d'accès, mais lorsque j'ouvre le fichier à l'aide de la commande vim /etc/paths
, j'obtiens les résultats suivants:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Le fichier / etc / chemins est-il différent de la variable $ PATH?
/etc/paths
dans le mien, mais je cours10.4.11
et les choses ont probablement changé depuis/etc/paths
est utilisé pour générer la valeur par défaut$PATH
, que vous pourrez modifier ultérieurement~/.bashrc
~/.profile
Réponses:
/etc/paths
fait partie de ce qui est utilisé pour configurer les$PATH
processus shell. Lorsque vous ouvrez une nouvelle fenêtre de terminal, celle-ci démarrebash
, qui exécute plusieurs scripts de démarrage:/etc/profile
ET~/.bash_profile
OU (si cela n'existe pas)~/.bash_login
OU (si cela n'existe pas non plus)~/.profile
. Ces scripts configurent l'environnement shell, notamment$PATH
.L'une des choses
/etc/profile
est exécutée/usr/libexec/path_helper
, qui lit/etc/paths
tous les fichiers/etc/paths.d
et y ajoute leur contenu$PATH
. Mais ce n'est qu'un point de départ; votre propre script de démarrage (le cas échéant) peut s'ajouter$PATH
, le modifier, le remplacer complètement, etc.Il me semble que votre script de démarrage (et / ou ce qu'il exécute) ajoute un certain nombre d'entrées à l'ensemble de base dont il provient
/etc/paths
. "Users / myusername / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:" est ajouté au début de$PATH
(ce qui signifie que ces répertoires seront recherchés en premier), et ": / Users / mac / Library / Android / sdk / platform-tools: / platform-tools "est ajouté à la fin. Si vous voulez savoir exactement ce qui les ajoute, vous devez regarder votre script de démarrage.BTW, ce processus de configuration
$PATH
s'applique uniquement aux shells bash "login". Tout ce qui est géré par un shell bash en héritera$PATH
, donc a probablement essentiellement la même chose. Les shells sans connexion bash suivent un processus de configuration quelque peu différent. D'autres shells, et des choses qui n'ont pas démarré à partir d'un shell du tout (par exemple les tâches cron) peuvent avoir complètement différent$PATHs
.la source
/usr/local/bin/bash
tel qu'installé parbrew
, sans l'-l
argument),/usr/libexec/path_helper
n'est pas utilisé et/usr/local/bin
n'est pas inclus par défaut dans le$PATH
. Pour utiliserpath_helper
dans un script ou de manière interactive, la commande esteval $(/usr/libexec/path_helper)
.Les premiers endroits où je chercherais à vérifier les modifications sont,
Si vous utilisez quelque chose qui n'est pas Bash, vérifiez les fichiers de configuration pour voir toute mention de PATH.
la source