Respuestas:
No, no creo que esto sea posible. Tampoco debería ser. Básicamente, esto equivaldría a una forma de inyectar código en un shell ya lanzado y activo, y representaría una amenaza de seguridad significativa.
Muchos procesos de daemon están diseñados para hacer esto. La forma típica sería enviarles la señal HUP (colgar) que hace que se reinicien después de volver a leer sus archivos de configuración. Podría desencadenar esto con algo como:
pkill -HUP daemon_name
Sin embargo, al hacer esto en bash, bash simplemente se apaga. No es un demonio y el sistema no hace que se comporte como tal.
En resumidas cuentas, es probable que no sigas haciendo cambios en tu bashrc con tanta frecuencia como pasa el tiempo y no será un gran problema. Cuando realice cambios, solo tendrá que volver a obtener el archivo si necesita los cambios en los shells en ejecución.
No hay nada integrado en bash. Podrías decirle que quizás se vuelva a cargar .bashrc
cada vez que muestra un mensaje, a través PROMPT_COMMAND
.
## Create a timestamp file, dated like the .bashrc that was read.
## There is a small race condition: if .bashrc is modified as the shell is
## just starting, before getting to this line, this instance won't detect
## that modification.
bashrc_timestamp_file=~/.bashrc-timestamp-$$
touch -r ~/.bashrc "$bashrc_timestamp_file"
## Remove the timestamp file on exit. The timestamp file will be left
## behind on a crash.
trap 'rm "$bashrc_timestamp_file"' EXIT HUP TERM INT QUIT
maybe_reload_bashrc () {
if [[ ~/.bashrc -nt $bashrc_timestamp_file ]]; then
. ~/.bashrc
fi
}
if [[ $PROMPT_COMMAND != *maybe_reload_bashrc* ]]; then
PROMPT_COMMAND="maybe_reload_bashrc
$PROMPT_COMMAND"
fi
Esto es un montón de problemas a los que accede un archivo adicional por lo que vale. Además, impone una restricción a su .bashrc
: el archivo debe ser idempotente, es decir, debe poder cargarlo más de una vez sin efectos nocivos. Por ejemplo, en el fragmento anterior, cuido añadir maybe_reload_bashrc
a PROMPT_COMMAND
sólo si no está allí ya.
touch -r ~/.bashrc $bashrc_timestamp_file
después del abastecimiento ~/.bashrc
. De hecho, casi escribí eso, pero no es necesario: solo lo han hecho las fuentes .bashrc
. El archivo de marca de tiempo se actualiza cada vez que .bashrc
se carga, no solo en la carga inicial.