¿Cómo recargar la configuración de .bashrc sin cerrar sesión y volver a iniciarla?
Si hago cambios en .bashrc
, ¿cómo lo recargo sin cerrar sesión y volver a iniciarla?
Puede ingresar el comando de formato largo:
source ~/.bashrc
o puedes usar la versión más corta del comando:
. ~/.bashrc
O podrías usar:
exec bash
Esto hace lo mismo y es más fácil de recordar (al menos para mí).
El exec
comando 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).
Para complementar y contrastar las dos respuestas más populares, . ~/.bashrc
y exec bash
:
Ambas soluciones recargan efectivamente~/.bashrc
, pero existen diferencias:
. ~/.bashrc
osource ~/.bashrc
preservará su sesión actual de Shell :- Excepto por las modificaciones que realiza la recarga
~/.bashrc
en 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.
- Excepto por las modificaciones que realiza la recarga
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
exec
enfoque 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 bash
podrí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 $BASH
siempre 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.
Alguien editó mi respuesta para agregar un inglés incorrecto, pero aquí estaba el original, que es inferior a la respuesta aceptada.
. .bashrc