Possível duplicata:
Execute scripts bash ao entrar em um diretório
Estou executando um ambiente que requer algumas versões de ferramentas muito específicas. Os comandos para configurar o ambiente estão em um script chamadoset_foo_env.sh
Suponha que eu tenha um diretório ~/repository/foo/
. É possível executar set_foo_env.sh
assim que entro no foo
diretório?
Responder1
Você poderia usar PROMPT_COMMAND, o código especificado em PROMPT_COMMAND é executado antes do bash desenhar o prompt.
# Call function 'foo'
PROMPT_COMMAND=foo
# The function
foo() {
if [[ $PWD == "$HOME/repository/foo" ]]; then
set_foo_env.sh
fi
}
Observe que PROMPT_COMMAND é específico do bash e esta não é uma maneira eficiente porque a função foo será chamada toda vez que o bash desenhar o prompt.
Responder2
Transforme o cd
em uma função para executar o real cd
e execute seu script depois.
cd () {
if builtin cd ${1:+"$@"} && [ -r ./set_foo_env.sh ]; then
. ./set_foo_env.sh
fi
}
Isso pressupõe que:
- O
set_foo_env.sh
seria específico para um único diretório e - Isso
set_foo_env.sh
deve mudar o ambiente do shell existente.
Se você deseja um arquivo global baseado em caminho, consulte a pergunta mencionada pelo manatwork (Execute scripts bash ao entrar em um diretório).