¿Cómo recargar la configuración de .bashrc sin cerrar sesión y volver a iniciarla?

Resuelto Jed Daniels asked hace 14 años • 18 respuestas

Si hago cambios en .bashrc, ¿cómo lo recargo sin cerrar sesión y volver a iniciarla?

Jed Daniels avatar Mar 26 '10 00:03 Jed Daniels
Aceptado

Puede ingresar el comando de formato largo:

source ~/.bashrc

o puedes usar la versión más corta del comando:

. ~/.bashrc
George Hawkins avatar Mar 25 '2010 18:03 George Hawkins

O podrías usar:

exec bash

Esto hace lo mismo y es más fácil de recordar (al menos para mí).

El execcomando reemplaza completamente el proceso de shell ejecutando la línea de comando especificada. En nuestro ejemplo, reemplaza el shell actual con una nueva instancia de bash(con los archivos de configuración actualizados).

WhoSayIn avatar Mar 06 '2012 13:03 WhoSayIn

Para complementar y contrastar las dos respuestas más populares, . ~/.bashrcy exec bash:

Ambas soluciones recargan efectivamente~/.bashrc , pero existen diferencias:

  • . ~/.bashrco source ~/.bashrcpreservará su sesión actual de Shell :

    • Excepto por las modificaciones que realiza la recarga ~/.bashrcen el shell actual ( sourcing ), se conservan el proceso actual del shell y su estado , que incluye variables de entorno, variables del shell, opciones del shell, funciones del shell e historial de comandos.
  • exec bash, o, de manera más sólida, exec "$BASH"[1] , reemplazará su shell actual con una nueva instancia y, por lo tanto, solo conservará las variables de entorno de su shell actual (incluidas las que haya definido ad hoc, durante la sesión).

    • En otras palabras: cualquier cambio ad hoc en el shell actual en términos de variables de shell, funciones de shell, opciones de shell e historial de comandos se pierde.

Dependiendo de sus necesidades, puede preferirse uno u otro enfoque.


Nota: Lo anterior también se aplica de manera análoga a otros shells :

  • Para aplicar el execenfoque a cualquiera que sea su shell predeterminado , useexec $SHELL
  • De manera similar, el enfoque de abastecimiento requiere que usted conozca y especifique el nombre del archivo de inicialización específico del shell; por ejemplo, para zsh:. ~/.zshrc

[1] exec bashpodría, en teoría, ejecutar un ejecutable diferente bash al que inició el shell actual, si existe en un directorio enumerado anteriormente en el archivo $PATH. Dado que la variable especial $BASHsiempre contiene la ruta completa del ejecutable que inició el shell actual, exec "$BASH"se garantiza el uso del mismo ejecutable.
Una nota "..."sobre $BASH: ​​las comillas dobles garantizan que el valor de la variable se utilice tal cual, sin interpretación por parte de Bash; Si el valor no tiene espacios incrustados u otros metacaracteres del shell (lo cual es probable en este caso), no necesita estrictamente comillas dobles, pero usarlas es un buen hábito.

mklement0 avatar Jan 28 '2016 23:01 mklement0

Alguien editó mi respuesta para agregar un inglés incorrecto, pero aquí estaba el original, que es inferior a la respuesta aceptada.

. .bashrc
Randy Proctor avatar Mar 25 '2010 17:03 Randy Proctor