117 votes

Comment ajouter /usr/local/bin dans $PATH sur Mac

Lorsque je clique sur "Ouvrir le profil" dans le terminal, j'obtiens le résultat suivant :

export PATH=$PATH:/usr/local/git/bin 

Maintenant j'ai installé node.js pour Mac et il dit,

Assurez-vous que /usr/local/bin est dans votre $PATH.

Comment puis-je ajouter /usr/local/bin d'exporter PATH=$PATH:/usr/local/git/bin ?

29 votes

J'ai voté pour la réouverture de cette question. Elle porte sur Node.js ainsi que sur Git (qui est un outil utilisé par les programmeurs).

9 votes

Ouais. Si pas ici, où.

7 votes

Petite information : Je ne connais pas les versions antérieures d'OS X, mais depuis Yosemite au moins, /usr/local/bin est inclus dans $PATH par défaut. Vous pouvez vérifier ce qui se trouve dans votre $PATH en exécutant echo $PATH.

134voto

Mark Reed Points 23817

Le site PATH contient une liste de répertoires séparés par des deux-points, donc si vous voulez ajouter plus d'un répertoire, il suffit de mettre un deux-points entre eux :

export PATH=$PATH:/usr/local/git/bin:/usr/local/bin

Cette syntaxe fonctionne dans n'importe quel shell compatible avec Bourne (sh, ksh, bash, zsh...). Mais zsh, qui est l'interpréteur de commandes par défaut dans les versions récentes de MacOS, expose également le PATH d'une autre manière - sous la forme d'une variable nommée (en minuscules) $path qui est un tableau au lieu d'une seule chaîne. Vous pouvez donc faire ceci à la place :

path+=(/usr/local/git/bin /usr/local/bin) 

Dans les deux cas, vous pouvez vérifier que le répertoire n'est pas déjà dans le PATH avant de l'ajouter. Voici à quoi cela ressemble en utilisant la syntaxe générique :

for dir in /usr/local/git/bin /usr/local/bin; do
   case "$PATH" in 
     $dir:*|*:$dir:*|*:$dir) :;; # already there, do nothing
     *) PATH=$PATH:$dir          # otherwise add it
   esac
done

Et voici une version spécifique à zsh :

for dir in /usr/local/git/bin /usr/local/bin; do
  if (( ${path[(i)$dir]} > $#path )); then
    path+=($dir)
  fi
done

Mais dans Zsh, vous pouvez aussi simplement marquer les variables du tableau comme n'acceptant que des entrées uniques :

typeset -TU PATH path

et même créer vos propres variables de type chemin en miroir dans des tableaux :

typeset -TU PYTHONPATH pythonpath

9 votes

Bien que vous puissiez le faire, ce n'est pas la façon de faire d'OS X. Les chemins sous OS X sont construits en utilisant /usr/libexec/path_helper appelé à partir de l'option par défaut /etc/profile . Commencez à man path_helper puis ajoutez vos chemins dans les fichiers dans /etc/paths.d . Vous constaterez qu'à peu près tous les exemples de définition de chemin d'accès d'autres systèmes d'exploitation comprennent les éléments suivants $PATH parce qu'aucun d'entre eux ne semble pouvoir s'engager à être le premier de la chaîne...

1 votes

Je répondais simplement à la question de savoir comment ajouter plusieurs répertoires au PATH. Vous pourriez également créer plusieurs entrées dans /etc/paths.d ou une entrée unique avec plusieurs répertoires, un par ligne, mais cela ne vous aide pas à l'invite, et c'est juste un moyen indirect d'accomplir la même chose. De plus, même si la question est balisée osx Cette approche a l'avantage de fonctionner également sur Linux et d'autres systèmes de type UNIX.

0 votes

Le problème que je trouve à Linux est qu'il est horriblement incohérent et n'est pas un bon exemple à suivre. Vous trouverez différentes sources vous disant d'utiliser .profile, .bashrc, /etc/profile, /etc/environment et ainsi de suite, et aucune d'entre elles ne veut prendre la responsabilité de dire "c'est le bon endroit pour définir le chemin du système", donc vous finissez par adopter l'approche "cross-your-fingers-and-hope" qui consiste à ajouter $PATH à tout, surtout en programmation. Installez npm à partir de homebrew et les chemins fonctionnent comme par magie car il le fait de la bonne manière.

24voto

sushil Points 967

Essayez de placer $PATH à la fin.

export PATH=/usr/local/git/bin:/usr/local/bin:$PATH

6voto

Daniel Raouf Points 544

Pour que la valeur éditée du chemin persiste dans les sessions suivantes

cd ~/
touch .bash_profile
open .bash_profile

Cela ouvrira le .bash_profile dans l'éditeur, écrivez à l'intérieur ce qui suit après avoir ajouté ce que vous voulez au chemin en séparant chaque valeur par une colonne.

export PATH=$PATH:/usr/local/git/bin:/usr/local/bin:

Sauvegardez, quittez, redémarrez votre terminal et profitez-en.

4voto

GuangYu Yang Points 41

J'ai eu le même problème que vous.

cd vers ../etc/ puis utilisez ls pour vérifier que votre fichier "paths" se trouve dans , vim paths, ajoutez "/usr/local/bin" à la fin du fichier.

2voto

J'ai tendance à trouver ça chouette

sudo mkdir -p /etc/paths.d   # was optional in my case
echo /usr/local/git/bin  | sudo tee /etc/paths.d/mypath1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X