Si hago cambios en .bashrc
, ¿cómo lo recargo sin cerrar sesión y volver a iniciarla?
1645
Solo tienes que ingresar el comando:
source ~/.bashrc
o puede usar la versión más corta del comando:
. ~/.bashrc
export PATH=$PATH:foo
y luego la cambia aexport PATH=$PATH:bar
. Si inicia la sesión y ir hacia atrás, solamentebar
estará en el camino, pero si lo que usted sugiere, tantofoo
ybar
estará en el PATH. ¿Conoces alguna forma de evitar esto?alias editbashrc='vim ~/.bashrc; source ~/.bashrc'
. Esto hará que la edición sea mucho más fluida, ya que no necesita pensar en la recarga, después de hacer la edición, si usa el alias personalizado.O podrías usar:
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 lo que sea el shell actual con una nueva instancia debash
(con los archivos de configuración actualizados).fuente
source .bashrc
mando yexec bash
?source
es un comando de shell incorporado que ejecuta el contenido del archivo pasado como argumento, en el shell actual . Entonces, en su ejemplo, ejecuta el archivo .bashrc en el shell actual. Y elexec
comando reemplaza el shell con un programa dado, en su ejemplo, reemplaza su shell con bash (con los archivos de configuración actualizados). ~/.bashrc
se ejecutará endash
lugar de hacerlobash
, por lo que hay un error porqueshopt
falta.source
no se encuentra desde el shell, por lo que esa solución también está fuera. ¡Probé esto y la imagen del acoplador se construyó sin problemas!source ~/.bashrc
preservará todo su entorno de shell (aunque probablemente se modificó por el origen de~/.bashrc
), mientrasexec bash
que solo conservará las variables de entorno de su shell actual (cualquier cambio ad-hoc al shell actual en términos de variables de shell, función, opciones se pierden). Dependiendo de sus necesidades, puede preferirse uno u otro enfoque.exec bash
. Elexec
comando reemplaza el shell con el programa, en nuestro caso, bash. Por lo tanto, siempre hay una instancia de bash en el terminal.Para complementar y contrastar las dos respuestas más populares,
. ~/.bashrc
yexec bash
:Ambas soluciones se recargan efectivamente
~/.bashrc
, pero hay diferencias:. ~/.bashrc
osource ~/.bashrc
se preservar su shell actual :~/.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.exec bash
o, más enérgicamente,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).Dependiendo de sus necesidades, puede preferirse uno u otro enfoque.
[1]
exec bash
en teoría podría ejecutar un ejecutable diferentebash
al que inició el shell actual, si es que existe en un directorio mencionado anteriormente en el$PATH
. Dado que la variable especial$BASH
siempre contiene la ruta completa del ejecutable que inició el shell actual,exec "$BASH"
se garantiza que usará el mismo ejecutable.Una nota
"..."
al respecto$BASH
: las comillas dobles aseguran que el valor de la variable se use tal cual, sin la interpretación de Bash; Si el valor no tiene espacios incrustados u otros metacaracteres de shell (lo cual no es probable en este caso), no necesita estrictamente comillas dobles, pero usarlos es un buen hábito para formar.fuente
exec $BASH
fuente~/.bashrc
, por lo que verá sus cambios en el entorno de shell en la nueva sesión.Alguien editó mi respuesta para agregar un inglés incorrecto, pero aquí estaba el original, que es inferior a la respuesta aceptada.
fuente
~/
, pero dado que la respuesta principal muestra ambassource ~/.bashrc
y. ~/.bashrc
me pregunto si esta respuesta debería eliminarse como redundante.Dependiendo de su entorno, simplemente escribiendo
También puede funcionar.
fuente
Con esto, ni siquiera tendrá que escribir "source ~ / .bashrc":
Incluya su archivo bashrc:
Cada vez que desee editar su bashrc, simplemente ejecute el alias " rc "
fuente
Alternativas
fuente
exec bash
Todavía hereda el entorno del shell actual.exec env -i bash
estaría más cerca (oexec env -i bash -l
si actualmente está en un shell de inicio de sesión).Dependiendo de su entorno, es posible que desee agregar secuencias de comandos para que .bashrc se cargue automáticamente cuando abra una sesión SSH. Recientemente hice una migración a un servidor que ejecuta Ubuntu, y allí, .profile, no .bashrc o .bash_profile se carga por defecto. Para ejecutar cualquier script en .bashrc, tenía que ejecutar
source ~/.bashrc
cada vez que se abría una sesión, lo que no ayuda al ejecutar implementaciones remotas.Para que su .bashrc se cargue automáticamente al abrir una sesión, intente agregar esto a .profile:
Vuelva a abrir su sesión, y debería cargar cualquier ruta / script que tenga en .bashrc.
fuente
Utilicé easyengine para configurar mi servidor basado en la nube vultr.
Encontré mi archivo bash en
/etc/bash.bashrc
.¡Lo mismo
source /etc/bash.bashrc
hizo el truco para mí!actualizar
Al configurar un servidor simple (ubuntu 16.04), puede usar la información anterior, cuando aún no ha configurado un nombre de usuario y está iniciando sesión a través de root.
Es mejor crear un usuario (con privilegios de sudo) e iniciar sesión como este nombre de usuario.
Esto creará un directorio para su configuración, incluidos los archivos .profile y .bashrc.
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/
Ahora, editará y (y "fuente") el
~/.bashrc
archivo.En mi servidor, esto estaba ubicado en
/home/your_username/.bashrc
(donde
your_username
es realmente el nuevo nombre de usuario que creó anteriormente, y ahora inicie sesión con)fuente
exec bash es una excelente manera de volver a ejecutar y lanzar un nuevo shell para reemplazar el actual. solo para agregar a la respuesta, $ SHELL devuelve el shell actual que es bash. Al usar lo siguiente, volverá a cargar el shell actual, y no solo a bash.
exec $SHELL -l;
fuente
Para mí, lo que funciona cuando cambio la RUTA es:
exec "$BASH" --login
fuente
~/.bashrc
, lo que--login
hará que no recarga (directamente); a nivel de usuario, se recargará~/.bash_profile
(o~/.bash_login
o~/.profile
) en su lugar.tipo:
source ~/.bashrc
o, en forma más corta:
. ~/.bashrc
fuente
.bashrc
se encuentra. Una forma más correcta de hacer esto, como se dice en la respuesta aceptada, essource ~/.bashrc
.uso el siguiente comando en msysgit
versión más corta de
fuente
Suponiendo un shell interactivo, y desea mantener su historial de comandos actual y también cargar / etc / profile (que carga datos del entorno que incluyen / etc / bashrc y en Mac OS X carga rutas definidas en /etc/paths.d/ a través de path_helper), agregue su historial de comandos y haga un exec de bash con la opción de inicio de sesión ('-l'):
fuente
Esto también funcionará ...
fuente
~
cambiar el directorio de trabajo al directorio de inicio del usuario?Noté que el
exec bash
comando puro preservará las variables de entorno, por lo que debe usarexec -c bash
para ejecutar bash en un entorno vacío.Por ejemplo, inicia sesión en un bash y
export A=1
, si ustedexec bash
, elA == 1
.Si
exec -cl bash
,A
está vacío.Creo que esta es la mejor manera de hacer tu trabajo.
fuente
yo personalmente tengo
alias ..='source ~/.bashrc'
en mi bashrc, para que pueda usar ".." para recargarlo.
fuente
..
como un aliascd ..
, por lo que será muy confuso.alias rehash='source ~/.bashrc'
Es mi elección.