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 reload
funçã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 🙂