Execute um script automaticamente quando eu mudo para um diretório

Execute um script automaticamente quando eu mudo para um diretório

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.shassim que entro no foodiretó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 cdem uma função para executar o real cde execute seu script depois.

cd () {
    if builtin cd ${1:+"$@"} && [ -r ./set_foo_env.sh ]; then
        . ./set_foo_env.sh
    fi
}

Isso pressupõe que:

  1. O set_foo_env.shseria específico para um único diretório e
  2. Isso set_foo_env.shdeve 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).

informação relacionada