Recarregamento automático do perfil Bash

Cansei de ter que criar meu perfil bash toda vez que fazia uma pequena mudança, como alterar variáveis ​​de ambiente e assim por diante. Isso se torna irritante quando você tem 5 guias + com janelas divididas no iTerm / Terminator / etc.

Eu estava prestes a escrever um pequeno texto de 3 linhas aqui que definiria uma reloadfunção em seu perfil, quando percebi – por que não fazer o shell pegar as alterações e recarregar o perfil para você?

#
# Quick helper function to reload the profile
#
reload
() {
source
~/.bash_profile
}

checkProfile
() {
#
# Set the hash command - this should work only on OS X
#
HASH_CMD
="md5 -q"

#
# Generate a quick hash
#
CURRENT_HASH
="`${HASH_CMD} ~/.bash_profile`"

#
# If there is a hash difference, set
# BASHPROFILE_HASH to the current hash value.
# If BASHPROFILE_HASH's current value is not empty,
# reload the bash profile
#
if
[ "${BASHPROFILE_HASH}" != "${CURRENT_HASH}" ]
then
OLD_HASH
="${BASHPROFILE_HASH}"
export BASHPROFILE_HASH
="${CURRENT_HASH}"

if
[ "${OLD_HASH}" == "" ]
then
return
fi

export BASHPROFILE_HASH
="${CURRENT_HASH}"
echo
"~/.bash_profile has been modified, reloading..."
reload

return
fi
}

#
# Prompt command defines a command that
# will run after every command execution, before echo'ing PS1.
#
PROMPT_COMMAND
="checkProfile"

Obviamente, isso não é perfeito (e se o perfil originar outros scripts?), Mas para esses casos, basta recarregar manualmente usando reload.

Ou sugira uma maneira à prova de balas de analisar uma árvore de origem para mudanças no bash que não envolvem a observação de arquivos 🙂