23 votes

Comment ajouter un répertoire à PATH lorsque j'utilise `zsh` en Sierra

Sur MacOS Sierra 10.12.x, quelle est la façon moderne d'ajouter un répertoire à l'arborescence de la base de données de l'entreprise ? Variable d'environnement PATH qui peut travailler sur plusieurs shells ou travailler spécifiquement avec zsh (je suis passé du shell par défaut bash a zsh ).

J'ai vu des questions et réponses telles que celui-ci qui sont spécifiques à la base. Et j'en ai vu certains comme celui-ci à propos de launchd mais il me semble avoir lu que launchd n'est pas le bon dans les versions ultérieures de MacOS (pas sûr). Je n'ai pas trouvé de références spécifiques pour Sierra, donc je poste maintenant.

J'essaie de installer Maven avec des instructions disant :

Ajoutez le répertoire bin du répertoire créé apache-maven-3.3.9 à la variable d'environnement PATH

0 votes

Pour maven, il suffit d'éditer les fichiers de démarrage du shell dans votre répertoire personnel. Les méthodes les plus complexes sont celles qui permettent d'exécuter des applications guides

12voto

Basil Bourque Points 9801

export

Pour modifier le chemin à l'intérieur de votre session shell, et non à l'échelle du système, vous pouvez utiliser le style bash export avec zsh comme documenté ici .

Le nom de la PATH est sensible à la casse et doit être entièrement en majuscules.

export PATH=$PATH:/folder/you/want

Pour vérifier votre changement, exécutez :

echo $PATH

Vous verrez les résultats comme ceci.

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/folder/you/want

0 votes

En règle générale, vous ne souhaitez pas mettre à jour le chemin d'accès en ajoutant un nouveau répertoire à la fin de celui-ci, car les exécutables se trouvant dans ce répertoire auront la priorité la plus faible, et les exécutables se trouvant dans les répertoires situés plus haut dans le chemin d'accès seront utilisés.

0 votes

Cette modification ne concerne que la session en cours. Cela ne sera pas utile pour les nouveaux onglets du terminal ou pour Windows, à moins que vous ne souhaitiez refaire ceci export à chaque fois.

12voto

bschlueter Points 151

Dans zsh, y compris sous MacOS, vous devez ajouter des entrées à votre chemin d'accès dans le fichier .zshrc . Par défaut, ce fichier est lu à partir du répertoire situé dans le répertoire $ZDOTDIR qui a pour valeur par défaut $HOME si elle n'est pas définie.

Pour ajouter une entrée à cet endroit, vous pouvez suivre les instructions pour bash et ajouter une ligne telle que :

export PATH=/opt/apache-maven-3.8.2/bin:$PATH

ou parce que zsh offre également une interface vers le chemin dans le fichier Chemin qui est un tableau, vous pouvez également l'utiliser :

export path=(/opt/apache-maven-3.8.2/bin $path)

L'un ou l'autre ajoutera /opt/apache-maven-3.8.2/bin à votre chemin avant le contenu précédent du chemin.

L'ordre est important, en particulier pour des programmes tels que zsh qui peuvent être présents à /bin/zsh et à /usr/local/bin/zsh comme ce serait le cas s'il était installé en utilisant homebrew ( /bin/zsh étant l'installation par défaut). Si vous l'installez séparément, vous souhaitez probablement l'utiliser et vous devez donc vous assurer que /usr/local/bin précède /bin sur votre chemin, donc pour l'ajouter vous devez utiliser :

path=(/usr/local/bin $path)

dans cet ordre. Et n'oubliez pas de l'exporter après l'avoir mis à jour avec export path ou précèdent path= avec export .

Si vous personnalisez fortement votre installation de zsh, vous pouvez être tenté de définir le chemin dans $ZDOTDIR/.zshenv . Cela doit être évité. Avant de charger ce fichier, /etc/zprofile est lu, ce qui, dans une installation MacOS par défaut, exécute :

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

Ce qui vissera l'ordre de toutes les personnalisations de votre chemin. Voir la page de manuel de zsh avec man zsh pour les détails de l'ordre de chargement ou man path_helper pour une explication de cet utilitaire.

2 votes

Excellente réponse, très détaillée !

1 votes

Quelle belle réponse ! Vous m'avez épargné des heures de lecture, et promu des heures de lecture supplémentaire (maintenant que je sais qu'il y a un "ordre de chargement" compliqué pour zsh).

10voto

John N Points 1418

Cette réponse (à une question différente) suggère de modifier /private/etc/paths ou l'ajout d'un fichier dans le répertoire /private/etc/paths/d . Je viens d'essayer sudo nano /private/etc/paths , ajouté /foo à la fin du fichier, et ouvert un nouvel onglet dans Terminal, et echo $PATH a montré /foo comme prévu, dans les deux bash y zsh coquilles.

En supposant que vous avez installé Maven à /opt/apache-maven-3.3.3 vous pourriez ajouter /opt/apache-maven-3.3.3/bin a /private/etc/paths . Cependant, et je n'ai pas essayé (cela fait plusieurs années que je n'ai pas fait de développement Java), j'aurais tendance à ajouter plutôt un fichier Maven (contenant /opt/apache-maven-3.3.3/bin ) à /private/etc/paths.d - qui encapsulera le changement de chemin spécifique à Maven, ce qui facilitera le nettoyage si jamais vous supprimez (ou mettez à jour) Maven.

0 votes

La modification du chemin d'accès au système (ce qui est le cas dans la plupart des endroits en dehors de votre répertoire personnel) peut avoir des conséquences inattendues. En règle générale, il suffit de modifier le chemin d'accès de l'utilisateur, car cela n'affectera pas les utilitaires du système qui peuvent s'appuyer sur le chemin d'accès par défaut.

0 votes

@bschlueter L'outil qui ajoute ces chemins à partir de /etc/paths place ces chemins après tous les autres, de sorte que le seul problème serait de s'attendre à ce qu'une commande ne soit pas trouvée dans le PATH.

0 votes

Je n'ai pas dit que je m'attendais à un problème, mais simplement qu'il s'agit de fichiers système et qu'il existe un endroit, votre répertoire personnel, où ces changements sont censés être effectués pour votre shell. Lorsque vous modifiez la configuration du système plutôt que celle de votre interpréteur de commandes, il est possible d'affecter le fonctionnement d'autres programmes, ce qui n'est souvent pas souhaitable ni conforme aux attentes des créateurs de ces programmes.

0voto

Si vous utilisez zsh

  1. éditer zshrc
  2. source ~/.zshrc
  3. quitter ce terminal par commande + w

il enregistrera vos modifications de manière permanente.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X