16 votes

Le chemin Homebrew défini dans .zshenv est remplacé

Suivant cette réponse sur les bonnes pratiques pour configurer Zsh, j'ai voulu déplacer mon initialisation PATH de Homebrew dans le fichier ~/.zshenv:

eval "$(/opt/homebrew/bin/brew shellenv)"

Cela modifie $PATH en plaçant les répertoires de Homebrew en premier, de sorte que les outils installés avec Homebrew aient la priorité sur les outils du système :

PATH=/opt/homebrew/bin:/opt/homebrew/sbin:/usr/bin:/bin

Cependant, une fois que l'interpréteur de commandes est lancé, les répertoires de Homebrew se retrouvent en dernier :

/usr/local/bin:/usr/bin:...:/opt/homebrew/bin:/opt/homebrew/sbin

19voto

Chris Cameron-Mills Points 2116

Après le sourcing de ~/.zshenv, le fichier suivant chargé est /etc/zprofile, fourni par macOS. Ce script s'exécute

eval `/usr/libexec/path_helper -s`

Le manuel de path_helper explique :

L'utilitaire path_helper lit le contenu des fichiers dans les répertoires /etc/paths.d et /etc/manpaths.d et ajoute leur contenu aux variables d'environnement PATH et MANPATH respectivement.

...

Avant de lire ces répertoires, les valeurs par défaut de PATH et MANPATH sont obtenues à partir des fichiers /etc/paths et /etc/manpaths respectivement.

À mon avis, il n'est pas clair à partir de la description, mais path_helper semble reconstruire PATH dans l'ordre suivant :

  1. Répertoires répertoriés dans le fichier /etc/paths
  2. Répertoires répertoriés dans les fichiers du répertoire /etc/paths.d (note : les fichiers ne sont pas énumérés dans l'ordre trié)
  3. Tous les autres répertoires qui étaient précédemment dans la variable PATH, à l'exclusion de ceux qui apparaissent dans les listes ci-dessus

Par conséquent, path_helper finit par déplacer Homebrew à la fin de PATH.

La solution est d'initialiser le chemin dans ~/.zprofile sur macOS. Ce fichier est chargé après /etc/zprofile et avant ~/.zshrc.

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