source - ¿Cómo recargo.bashrc sin cerrar sesión y volver a entrar?
restart bashrc file (14)
Alguien editó mi respuesta para agregar un inglés incorrecto, pero aquí estaba el original, que es inferior a la respuesta aceptada.
. .bashrc
Si hago cambios en .bashrc
, ¿cómo lo recargo sin cerrar sesión y volver a entrar?
Con esto, ni siquiera tendrá que escribir "source ~ / .bashrc":
Incluye tu archivo bashrc:
alias rc="vim ~/.bashrc && source ~/.bashrc"
Cada vez que desee editar su bashrc, simplemente ejecute el alias " rc "
Dependiendo de su entorno, es posible que desee agregar secuencias de comandos para que .bashrc se cargue automáticamente al abrir una sesión SSH. Hace poco realicé una migración a un servidor que ejecuta Ubuntu, y allí, .profile, no .bashrc o .bash_profile se carga de forma predeterminada. Para ejecutar cualquier script en .bashrc, tuve que ejecutar source ~/.bashrc
cada vez que se abría una sesión, lo que no ayuda cuando se ejecutan implementaciones remotas.
Para que su .bashrc se cargue automáticamente al abrir una sesión, intente agregar esto a .profile:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Vuelva a abrir su sesión, y debería cargar todas las rutas / scripts que tenga en .bashrc.
Dependiendo de su entorno, simplemente escribiendo
bash
También puede funcionar.
Esto también funcionará ..
cd ~
source .bashrc
Noté que el comando exec bash
puro conservará las variables de entorno, por lo que debe usar exec -c bash
para ejecutar bash en un entorno vacío.
Por ejemplo, inicia sesión en un bash y export A=1
, si exec bash
, el A == 1
.
Si exec -cl bash
, A
está vacío.
Creo que esta es la mejor manera de hacer tu trabajo.
Para complementar y contrastar las dos respuestas más populares,. . ~/.bashrc
y exec bash
:
Ambas soluciones recargan efectivamente ~/.bashrc
, pero hay diferencias:
. ~/.bashrc
. ~/.bashrc
osource ~/.bashrc
mantendrán su shell actual :- Excepto por las modificaciones que realiza la recarga de
~/.bashrc
en el shell actual ( fuente ), el shell actual y su estado se conservan , lo que incluye variables de entorno, variables de shell, opciones de shell, funciones de shell e historial de comandos.
- Excepto por las modificaciones que realiza la recarga de
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).- En otras palabras: se pierden todos los cambios ad hoc del shell actual en términos de variables de shell, funciones de shell, opciones de shell, historial de comandos.
Dependiendo de sus necesidades, se puede preferir uno u otro enfoque.
[1] exec bash
podría, en teoría, ejecutar un ejecutable de bash
diferente al que inició el shell actual, en caso de que exista en un directorio listado anteriormente en $PATH
. Dado que la variable especial $BASH
siempre contiene la ruta completa del ejecutable que inició el shell actual, se garantiza que el ejecutable exec "$BASH"
use el mismo ejecutable.
Una nota con "..."
alrededor de $BASH
: las $BASH
dobles aseguran que el valor de la variable se use tal como está, sin la interpretación de Bash; Si el valor no tiene espacios incrustados u otros metacaracteres de shell (lo que no es probable en este caso), no necesita estrictamente las comillas dobles, pero usarlas es un buen hábito.
Para mí, lo que funciona cuando cambio el PATH es: exec "$BASH" --login
Solo tienes que introducir el comando:
source ~/.bashrc
o puedes usar la versión más corta del comando:
. ~/.bashrc
Yo uso el siguiente comando en msysgit
. ~/.bashrc
versión más corta de
source ~/.bashrc
o podrías usar;
exec bash
hace lo mismo (y más fácil de recordar, al menos para mí)
El comando exec reemplaza el shell con el programa dado, en nuestro ejemplo, reemplaza nuestro shell con bash (con los archivos de configuración actualizados)
tipo:
source .bashrc
yo personalmente tengo
alias ..=''source ~/.bashrc''
en mi bashrc, para que pueda usar ".." para recargarlo.
. ~/.bashrc
Alternativas
source ~/.bashrc
source
es un sinónimo de punto / período.
en bash, pero no en POSIX sh, así que para una máxima compatibilidad use el período.
exec bash
exec
comandoexec
reemplaza el shell con un programa dado ... - WhoSayIn