Saltar al contenido

¿Cómo aplico los cambios al archivo .zshrc después de editarlo?

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) o chpwd_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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *