Uma maneira, como outra resposta aponta, seria fazer uma função que substitua a chamada do editor para .bashrc com um processo de duas etapas que
- abre seu editor no .bashrc
- fontes .bashrc
como:
vibashrc() { vi $HOME/.bashrc; source $HOME/.bashrc; }
Isso tem algumas deficiências:
- exige que você lembre de digitar
vibashrc
toda vez que quiser que a origem ocorra - isso só aconteceria na janela atual do seu bash
- tentaria originar .bashrc independentemente de ter feito alguma alteração
Outra opção seria conectar-se ao PROMPT_COMMAND do bash funcionalidade para fonte .bashrc em qualquer / todos bash shells sempre que ele ver que o arquivo .bashrc foi atualizado (e pouco antes do próximo prompt ser exibido).
Você deve adicionar o seguinte código ao seu arquivo .bashrc (ou estender qualquer funcionalidade PROMPT_COMMAND existente com ele):
prompt_command() {
# initialize the timestamp, if it isn't already
_bashrc_timestamp=${_bashrc_timestamp:-$(stat -c %Y "$HOME/.bashrc")}
# if it's been modified, test and load it
if [[ $(stat -c %Y "$HOME/.bashrc") -gt $_bashrc_timestamp ]]
then
# only load it if '-n' succeeds ...
if $BASH -n "$HOME/.bashrc" >& /dev/null
then
source "$HOME/.bashrc"
else
printf "Error in $HOME/.bashrc; not sourcing it\n" >&2
fi
# ... but update the timestamp regardless
_bashrc_timestamp=$(stat -c %Y "$HOME/.bashrc")
fi
}
PROMPT_COMMAND='prompt_command'
Então, na próxima vez que você efetuar login, o bash carregará esta função e solicitará o hook, e toda vez que estiver prestes a exibir um prompt, ele verificará se $ HOME / .bashrc foi atualizado. Se tiver, será executada uma verificação rápida dos erros de sintaxe (o set -n
opção), e se o arquivo estiver limpo, fonte.
Ele atualiza a variável timestamp interna, independentemente da verificação de sintaxe, para que não tente carregá-la até que o arquivo seja salvo / atualizado novamente.