Você poderia usar PROMPT_COMMAND, o código especificado em PROMPT_COMMAND é executado antes que o bash desenhe o prompt.
# Call function 'foo'
PROMPT_COMMAND=foo
# The function
foo() {
if [[ $PWD == "$HOME/repository/foo" ]]; then
set_foo_env.sh
fi
}
Note que PROMPT_COMMAND é bash específico, e isto não é uma maneira eficiente porque a função foo será chamada toda vez que bash desenhar o prompt.