web-dev-qa-db-fra.com

Où $ PATH est-il défini dans OS X 10.6 Snow Leopard?

Je tape echo $PATH sur la ligne de commande et je reçois

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

Je me demande où cela est en train de se placer puisque mon fichier .bash_login est vide.

Je suis particulièrement préoccupé par le fait qu'après avoir installé MacPorts, il a installé un tas de fichiers indésirables dans /opt. Je ne pense pas que ce répertoire existe même dans une installation normale de Mac OS X.

Mise à jour: Merci à jtimberman pour avoir corrigé mon instruction echo $PATH

134
Andrew

Lorsque bash démarre, il lit les fichiers suivants chaque fois que vous vous connectez. Pour les besoins de OS X, cela signifie chaque fois que vous ouvrez une nouvelle fenêtre Terminal.

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

Lorsque vous démarrez un nouveau shell en tapant bash sur la ligne de commande, il se lit .bashrc

OS X utilise également ~/.MacOSX/environment.plist pour définir plus de variables d’environnement, y compris des chemins si nécessaire.

Enfin, /etc/paths et /etc/paths.d sont également lus par le shell.


/opt/local/bin etc. sont ajoutés dans ~/.tcshrc par MacPorts. Veillez également à regarder dans ~/.cshrc.

157
Steve Folly

Jetez un coup d'œil au fichier /etc/paths, qui est utilisé par /usr/libexec/path_helper, qui est utilisé par /etc/profile.

Pour MacPorts, utilisez Sudo /etc/paths/opt/local/bin et rouvrez la fenêtre du terminal.

47
Jim Logan

Sérieusement, Leopard nous a donné un nouveau moyen d'ajouter un chemin. Créez simplement un fichier contenant la partie du chemin que vous souhaitez ajouter, puis placez-le dans /etc/paths.d

Voici un exemple rapide de cela:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Sinon, vous pouvez simplement aller dans /etc/paths.d et y placer le fichier directement. Dans les deux cas, toutes les parties de chemin figurant dans les fichiers de ce répertoire seront ajoutées au chemin par défaut.

Cela fonctionne aussi pour manpath.

Voici un lien vers plus de détails:

ars technica: comment puis-je ajouter quelque chose à PATH dans Snow Leopard?

Sur une note 2: MacPorts met tout dans le répertoire opt précisément parce qu'il n'est pas utilisé par les produits Apple. De cette façon, il ne sera pas en conflit. Leur guide (excellemment écrit, BTW) explique pourquoi il utilise opt et comment changer ce paramètre par défaut si vous le souhaitez.

Guide MacPorts

25
leanne

Pour montrer votre chemin, echo $ PATH.

echo $PATH

Pour définir votre chemin, éditez ~/.bash_profile, pas ~/.bash_login.

4
jtimberman

Il y a aussi le chemin déterminé par ssh .

Comparez echo $PATH à ssh localhost 'echo $PATH'. Puisque ssh ne lit pas/etc/profile,/usr/libexec/path_helper ne s'exécute pas et donc/etc/path est ignoré. Maintenant, essayez ssh localhost 'source /etc/profile; echo $PATH'. Les chemins devraient être plus proches. Les différences restantes seront probablement dues à la modification du chemin dans votre fichier .bash_profile (qui est également ignoré par ssh) et .bashrc (qui est lu par ssh).

Si vous voulez que votre chemin ssh soit similaire à votre chemin de terminal normal, vous pouvez ajouter source /etc/profile à votre fichier .bashrc.

3
Keith Bentrup

Il pourrait être défini soit dans:

  • Variables système - /etc/paths
  • Variables utilisateur - voir l'explication de @Steve Folly
2
ericn

En réalité, il est stocké dans votre fichier .profile au lieu de .bash_login et il est courant que MacPorts l'utilise au lieu du fichier .bash_login.

De plus, le répertoire /opt est généralement créé par MacPorts et stocke ses fichiers dans ce dossier.

1
ricbax

En ce qui concerne l’utilitaire docs for /usr/libexec/path_helper, les composants initiaux de $ PATH ont été extraits de /etc/paths et ressemblent par défaut à

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

pour OS-X Snow Leopard

1
A B