Où PATH se place-t-il dans OS X 10.6 Snow Leopard?

Je tape echo $PATH sur la ligne de commande et obtenez

/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 se règle puisque mon fichier .bash_login est vide.

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

Mise à jour: Merci à jtimberman pour corriger mon echo $PATH statement

    Lorsque bash commence, il lit les fichiers suivants chaque fois que vous vous connectez. Aux fins d'OS X, cela signifie que 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 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 .

    Jetez un oeil sur le fichier /etc/paths , 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.

    Sérieusement, Leopard nous a donné une nouvelle façon d'ajouter un chemin. Créez simplement un fichier contenant la partie de chemin que vous souhaitez ajouter et mettez-le dans /etc/paths.d

    Un exemple rapide de faire cela en une seule étape est:

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

    Sinon, vous pouvez simplement accéder à /etc/paths.d et le déposer directement. Quoi qu'il en soit, toutes les parties du chemin 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 le léopard des neiges?

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

    Guide MacPorts

    Pour montrer votre chemin, echo $ PATH.

     echo $PATH 

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

    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 / paths est ignoré. Essayez maintenant ssh localhost 'source /etc/profile; echo $PATH' 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_ (qui est également ignoré par ssh) et .bashrc (qui est lu par ssh).

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

    Il pourrait être défini soit dans:

    • Variables du système – /etc/paths
    • Variables utilisateur – voir l'explication de @Steve Folly

    En fait, il est stocké dans votre fichier .bash_login au lieu de .bash_login et il est courant que MacPorts l'utilisera au lieu du fichier .bash_login .

    En outre, le répertoire /opt est créé par MacPorts et stocke ses fichiers dans ce dossier.

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

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

    Pour OS-X Snow Leopard