Te recomendamos que pruebes esta resolución en un ambiente controlado antes de enviarlo a producción, un saludo.
Solución:
reiniciar zsh
Zsh lee .zshrc
cuando empieza No necesita cerrar la sesión y volver a iniciarla. Simplemente cerrar la terminal y abrir una nueva le da su nueva .zshrc
en esta nueva terminal. Pero puedes hacer esto más directo. Solo dile a zsh que se reinicie:
exec zsh
Si ejecuta esto en un indicador de zsh, esto reemplaza la instancia actual de zsh por una nueva, que se ejecuta en la misma terminal. La nueva instancia tiene el mismo ambiente variables como el anterior, pero tiene fresco cáscara (no exportadas) y comienza un nuevo historial (por lo que combinará comandos de otros terminales en configuraciones típicas). Cualquier trabajo en segundo plano es repudiado.
Releer .zshrc
También puede decirle a zsh que vuelva a leer .zshrc
. Esto tiene la ventaja de preservar el historial de shell, las variables de shell y el conocimiento de los trabajos en segundo plano. Pero dependiendo de lo que pongas en tu .zshrc
, esto puede o no funcionar. releyendo .zshrc
ejecuta comandos que pueden no funcionar, o no funcionar bien, si los ejecuta dos veces.
. ~/.zshrc
Hay demasiadas cosas que puede hacer para enumerar todo lo que está bien y no está bien para poner .zshrc
si quieres poder ejecutarlo dos veces. Aquí hay solo algunos Problemas comunes:
- Si agrega a una variable (por ejemplo,
fpath+=(~/.config/zsh)
ochpwd_functions+=(my_chpwd)
), esto agrega los mismos elementos nuevamente, lo que puede o no ser un problema. - Si define alias y también usa el mismo nombre como comando, el comando ahora ejecutará el alias. Por ejemplo, esto funciona:
function foo … alias foo='foo --common-option'
Pero esto no es así, porque la segunda vez que se obtiene el archivo,
foo ()
expandirá el alias:foo () … alias foo='foo --common-option'
- Si parchea una función zsh existente, ahora estará parcheando su propia versión, lo que probablemente hará un desastre.
- Si hace algo como “intercambiar los enlaces de dos keys”, que no hará lo que quieres la segunda vez.
Los cambios en los archivos de inicialización de shells estarán activos en el Siguiente shell que inicia, por ejemplo, si abre una nueva terminal gráfica o cierra la sesión y vuelve a iniciarla. Si ha realizado cambios que deberían afectar su entorno de escritorio de alguna manera (no sé qué tipo de cambio puede ser), entonces será necesario cerrar la sesión y volver a iniciarla.
Ustedes pudo origen del archivo con . /path/to/filename
(. ~/.zshrc
en su caso) o inicie una nueva sesión de shell desde la línea de comando con zsh
, pero esto casi nunca es una buena idea, ya que puede tener consecuencias no deseadas, como agregar rutas duplicadas al $PATH
extra variable o inicial ssh-agent
procesos o lo que sea que pueda estar haciendo en ese archivo. Los cambios tampoco serían visibles en el programa que ya se ha iniciado.
Para un cambio como simplemente agregar a la $PATH
incondicionalmente, obviamente podría simplemente ejecutar el comando agregado en el shell actual:
$ path+=/usr/local/openjdk12/bin
Esto sería (en zsh
) añade el /usr/local/openjdk12/bin
directorio hasta el final de $PATH
(y hasta el final de la $path
array en zsh
) en la sesión de shell actual. De nuevo, este cambio a $PATH
no afectaría a los procesos que ya se están ejecutando.
Puede obtener el nuevo archivo, que funcionaría para algunos cambios, posiblemente incluida la actualización de la variable PATH (dependiendo de otras líneas). Sin embargo, el abastecimiento simplemente ejecutaría .zshrc
de nuevo, y podría ejecutar comandos duplicados inesperados. Además, si hubiera líneas eliminadas del antiguo .zshrc
, entonces no se “borrarían” de la sesión.
La forma más limpia es simplemente cerrar la sesión y volver a iniciarla. Solo necesitaría hacerlo para la sesión de terminal, no para todo el entorno de escritorio.
Si para ti ha resultado de utilidad este artículo, sería de mucha ayuda si lo compartieras con otros desarrolladores y nos ayudes a difundir esta información.