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.
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 ...):
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.
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 }.
.zshenv
.~/.zshenv
También proviene de shells de inicio de sesión? ¿DeberíaPATH
definirse allí?PATH
es 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). Consulteman zsh
para ver qué archivos se obtienen y en qué orden.Respuestas:
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/path
que probablemente deseeexport PATH="$PATH:/some/path"
, a menos que tenga la intención de borrar completamente la ruta predeterminada del sistema.fuente
Demure ya respondió a su pregunta específica. Sin embargo, esta es una
zsh
pregunta y sobrePATH
. Así que aquí hay otro punto: además de la variable estándar$PATH
, también$path
hay una matriz. Aquí ves la diferencia (dos puntos o no ...):Ambas variantes se mantienen sincronizadas automáticamente. Entonces, ¿cuál es el beneficio de usar una matriz?
typeset -U path
"mantener solo la primera aparición de cada valor duplicado" (desdeman 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.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.htmlfor i ($path) { print $i # or do something else }
Finalmente, aquí hay un extracto de mi configuración:
fuente
path
lugar dePATH
.for i ($path) { print $i # or do something else }
.