zsh config: ¿exportar o no exportar?

23

Al configurar variables en mi ~/.zshrc, puedo usarexport

export PATH=/some/path

o no

PATH=/some/path

¿Cómo difieren estos y cuál debo usar?

jordelver
fuente
Las variables ambientales que también son utilizadas por shells no interactivos (digamos, un script de shell que escribió) deben entrar .zshenv.
Francisco
¿ ~/.zshenvTambién proviene de shells de inicio de sesión? ¿Debería PATHdefinirse allí?
jordelver
1
PATHes probablemente el mejor ejemplo de una variable que debe definirse en el interior ~/.zshenv, este archivo se obtiene de cualquier sesión de zsh (a menos que use alguna opción para desactivarlo). Consulte man zshpara ver qué archivos se obtienen y en qué orden.
Francisco
Ok, gracias @Francisco, leeré la página del manual.
jordelver

Respuestas:

21

Si desea que los programas se ejecuten desde zsh para ver la var, expórtela.
Para la ruta, probablemente desee exportar.
En lugar de lo export PATH=/some/pathque probablemente desee export PATH="$PATH:/some/path", a menos que tenga la intención de borrar completamente la ruta predeterminada del sistema.

recatado
fuente
Eso es genial gracias. Usaré exportar como regla general ahora.
jordelver
21

Demure ya respondió a su pregunta específica. Sin embargo, esta es una zshpregunta y sobre PATH. Así que aquí hay otro punto: además de la variable estándar $PATH, también $pathhay una matriz. Aquí ves la diferencia (dos puntos o no ...):

$ print $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
$print $path
/bin /usr/bin /usr/local/bin /usr/X11R6/bin

Ambas variantes se mantienen sincronizadas automáticamente. Entonces, ¿cuál es el beneficio de usar una matriz?

  • A través de este último puede declarar typeset -U path"mantener solo la primera aparición de cada valor duplicado" (desde man zshbuiltins). Eso significa que esto mantiene su camino limpio, incluso si obtiene su fuente sucesivamente ~/.zshrc(porque lo cambió o lo que sea) y no lo abarrote con los mismos valores una y otra vez.
  • Puede usar path+=(/new/path)para agregar un nuevo directorio a su RUTA. Para eliminar un elemento, debe usar algunos trucos, consulte, por ejemplo, /programming//q/3435355/2037712 o http://www.zsh.org/mla/users//2005/msg01132.html
  • Puede recorrer fácilmente los elementos en la RUTA a través de for i ($path) { print $i # or do something else }

Finalmente, aquí hay un extracto de mi configuración:

typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH
mpy
fuente
Gracias, esa fue en realidad una pregunta de seguimiento. Analizaré la administración de mi ruta utilizando en pathlugar de PATH.
jordelver
1
Me alegra saber que ya temía ser OT. Por cierto. Otra ventaja que olvidé: puede recorrer fácilmente los elementos con for i ($path) { print $i # or do something else }.
mpy