Risposte:
No, non credo sia possibile. Né dovrebbe essere. Ciò equivarrebbe sostanzialmente a un modo per iniettare codice in una shell già avviata e attiva e costituirebbe una significativa minaccia alla sicurezza.
Molti processi daemon sono progettati per fare questo. Il modo tipico sarebbe di inviare loro il segnale HUP (hangup) che li fa riavviare dopo aver riletto i loro file di configurazione. Puoi attivarlo con qualcosa del tipo:
pkill -HUP daemon_name
Tuttavia, quando lo si fa su bash, bash si spegne. Non è un demone e il sistema non si comporta come uno.
Il lungo e il breve è che probabilmente non continuerai a apportare modifiche al tuo bashrc così frequentemente col passare del tempo e non sarà un grosso problema. Quando si apportano modifiche, sarà sufficiente rinominare il file se sono necessarie le modifiche nell'esecuzione delle shell.
Non c'è niente incorporato in bash. Si potrebbe dire che potrebbe ricaricare .bashrcogni volta che viene visualizzato un prompt, attraverso 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
Questo è un sacco di problemi a cui un file extra accede per quello che vale. Inoltre, pone un limite al tuo .bashrc: il file deve essere idempotente, cioè devi essere in grado di caricarlo più di una volta senza effetti negativi. Per esempio, nel frammento di sopra, mi prendo cura di aggiungere maybe_reload_bashrcal PROMPT_COMMANDsolo se non è già lì.
touch -r ~/.bashrc $bashrc_timestamp_filedopo l'approvvigionamento ~/.bashrc. In realtà l'ho quasi scritto, ma non è necessario: è stato appena fatto dalla fonte .bashrc. Il file timestamp viene aggiornato ogni volta che .bashrcviene caricato, non solo sul caricamento iniziale.