2009-11-11 18:48:39 +0000 2009-11-11 18:48:39 +0000
141
141

Où se trouve $PATH dans OS X 10.6 Snow Leopard ?

Je tape echo $PATH sur la ligne de commande et j'obtiens

/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 va se mettre puisque mon fichier .bash_login est vide.

Je m'inquiète particulièrement du fait qu'après l'installation de MacPorts, il a installé un tas de saletés 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é ma déclaration echo $PATH.

Réponses (7)

161
161
161
2009-11-11 20:57:32 +0000

Lorsque bash démarre, il lit les fichiers suivants à chaque fois que vous vous connectez. Pour les besoins d'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 lit .bashrc

OS X utilise également ~/.MacOSX/environment.plist pour définir plus de variables d'environnement, y compris les chemins d'accès 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.

25
25
25
2011-03-25 18:07:37 +0000

Sérieusement, Leopard nous a donné une nouvelle façon d'ajouter du chemin. Il suffit de créer un fichier contenant la partie du chemin que vous souhaitez ajouter, et de le placer dans /etc/paths.d

Voici un exemple rapide de cette opération en une seule étape :

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

Sinon, vous pouvez simplement aller dans /etc/paths.d et y mettre le fichier directement. Dans tous les cas, toute partie du chemin d'accès aux fichiers de ce répertoire sera ajoutée au chemin d'accès par défaut.

Cela fonctionne également pour manpath.

Voici un lien pour plus de détails : ars technica : comment ajouter quelque chose à PATH dans snow leopard ?

Sur une 2ème note : MacPorts met tout dans le répertoire opt précisément parce qu'il n'est pas utilisé par les trucs d'Apple. De cette façon, il n'y a pas de conflit. Leur guide (très bien écrit, BTW) explique pourquoi il utilise opt et comment modifier cette valeur par défaut si vous le souhaitez. Guide MacPorts

4
4
4
2009-11-11 19:07:28 +0000

Pour montrer votre chemin, faites écho à $PATH.

echo $PATH

Pour définir votre chemin, modifiez ~/.bash_profile, et non ~/.bash_login.

3
3
3
2012-02-07 19:36:18 +0000

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 fonctionne pas et donc /etc/paths 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 profil .bash_profile (qui est également ignoré par ssh) et .bashrc (qui est lu par ssh).

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

2
2
2
2013-06-01 09:50:21 +0000

Il pourrait être défini dans l'un ou l'autre :

  • Variables système - /etc/paths
  • Variables utilisateur - voir l'explication de @Steve Folly
1
1
1
2009-11-11 19:13:39 +0000

En fait, il est stocké dans votre fichier .profile au lieu de .bash_login et il est courant que MacPorts l'utilise à la place du fichier .bash_login.

Aussi Le répertoire /opt est généralement créé par MacPorts et il stocke ses fichiers dans ce dossier.

1
1
1
2012-06-26 01:40:17 +0000

Concernant docs pour /usr/libexec/path_helper utilitaire, les composants initiaux pour $PATH ont été repris de /etc/paths et par défaut ressemble à

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

pour OS-X Snow Leopard