15 votos

El PATH de Homebrew establecido en .zshenv se anula

Tras esta respuesta sobre las mejores prácticas para configurar Zsh, quería mover mi Homebrew PATH inicialización a la ~/.zshenv archivo:

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

Esto modifica $PATH colocando primero los directorios de Homebrew, para que las herramientas instaladas con Homebrew tengan prioridad sobre las del sistema:

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

Sin embargo, después de que el shell se inicie, los directorios de Homebrew son último :

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

18voto

Después de ~/.zshenv se obtiene, el siguiente archivo que se carga es /etc/zprofile que proporciona MacOS. Este script ejecuta

eval `/usr/libexec/path_helper -s`

El manual de path_helper explica:

La utilidad path_helper lee el contenido de los archivos en los directorios /etc/paths.d y /etc/manpaths.d y añade su contenido al PATH y MANPATH variables de entorno, respectivamente.

...

Antes de leer estos directorios, por defecto PATH y MANPATH se obtienen de los archivos /etc/paths y /etc/manpaths respectivamente.

En mi opinión no está claro en la descripción, pero path_helper parece reconstruirse PATH en el siguiente orden:

  1. Directorios listados en el archivo /etc/paths
  2. Los directorios que aparecen en los archivos de /etc/paths.d (nota: los archivos no se enumeran en orden)
  3. Cualquier otro directorio que estuviera previamente en el PATH variable, excluyendo las que aparecen en las listas anteriores

Por lo tanto, path_helper termina moviendo Homebrew al final de PATH .

La solución es hacer la inicialización de la ruta en ~/.zprofile en MacOS. Este archivo se carga después de /etc/zprofile y antes ~/.zshrc .

7 votos

Básicamente Apple no pudo leer la documentación de zsh y puso path_helper en el lugar equivocado

4 votos

Gracias por esto, descubrí lo mismo después de poner muchas sentencias debug echo en cada archivo /etc/z* y ~/.z* como echo '/etc/zprofile sourced.' y descubrí que MacOS hace las cosas de otra manera. Un fastidio.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X