Estoy usando zsh
mi shell e intento configurar mi entorno.
Normalmente defino mi $JAVA_HOME
variable creando un archivo:
/etc/profile.d/java.sh
con el siguiente contenido
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
luego me desconecto y vuelvo, y todo funciona, pero por alguna razón la PATH
variable no está configurada. Reconoce JAVA_HOME
, pero no el nuevo PATH
, vea este fragmento de terminal:
~ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
y lo confirmé al intentar ejecutar un comando desde el jvm
~ java -version
zsh: command not found: java
el PATH
no incluye el $JAVA_HOME
como debería. ¿Hay algo más que deba verificar?
Lo he comprobado si ejecuto:
source /etc/profile.d/java.sh
todo se ejecuta correctamente y mis variables se configuran como deberían, pero ¿no deberían /etc/profile.d
ejecutarse los scripts automáticamente?
environment-variables
zsh
Rodrigo Sasaki
fuente
fuente
~/.profile
y colocar las variables allí? Puede ser quePATH
se esté sobrescribiendo en otra parte de/etc/profile.d/
.Respuestas:
Desde mi punto de vista, la mejor manera es agregar las siguientes líneas en el
~/.zshrc
archivo (si aún no lo tiene, entonces créelo):Luego reinicie su
zsh
, o simplemente ejecutesource ~/.zshrc
y luego su RUTA debe ser exactamente como lo desee.O, si desea que el cambio sea para todo el sistema, agregue el código anterior al final del
/etc/zsh/zshenv
archivo.Pero en cualquier caso, no lo use
/etc/profile.d
para ejecutar scripts automáticamentezsh
. Este directorio es útil solo para elbash
shell, nozsh
como en su caso. Para entender esto, abra el/etc/profile
archivo, que es un archivo de inicialización bash y en ningún caso un archivo de inicialización zsh , y verá en algún lugar al final del archivo:Por lo tanto, sus scripts del
/etc/profile.d
directorio se ejecutarán automáticamentezsh
solo si agrega el código anterior en un archivo de inicialización zsh, como/etc/zsh/zprofile
por ejemplo, o fuente/etc/profile
en el/etc/zsh/zprofile
archivo.fuente
~/.zprofile
podría ser mejor que~/.zshrc
.Me parece que colocar todo en un
.zshenv
archivo rápidamente se vuelve difícil de administrar. Recomiendo instalar oh-my-sh y luego colocar varias personalizaciones (env vars, funciones) en el.oh-my-sh/custom/
directorio como.zsh
archivos separados .También descubrí que este enfoque funciona a la perfección cuando ssh'ing en la máquina al modificar variables env como
PATH
. También funciona muy bien junto con vcsh para mantener las personalizaciones respaldadas y sincronizadas.fuente
~/.ssh/config
Como
JAVA_HOME
está configurado, ha confirmado que esos scripts se obtienen automáticamente, ¿no es así?La única explicación lógica es que
PATH
se establece más adelante de alguna manera. Originalmente debería ser configurado por PAM que lee/etc/environment
, y que yo sepa, eso sucede antes de/etc/profile.d/*.sh
que se obtengan los archivos. Posiblemente zsh funciona diferente en comparación con bash en ese sentido.fuente
Acabo de encontrar este problema localmente después de ejecutar actualizaciones. Parece que el problema raíz es que Drush no sabe dónde encontrar una copia legítima de php que incluya pdo. Afortunadamente, admite ocultar esta ruta en una variable de entorno, así que hice esto en la línea de comandos:
Eso solucionó el problema, así que edité .zshrc y agregué eso al archivo, problema resuelto.
fuente
.zshrc
se use, lo mismo que la respuesta principal ?