Ejecutar un script automáticamente cuando cambio a un directorio

Ejecutar un script automáticamente cuando cambio a un directorio

Posible duplicado:
Ejecutar scripts bash al ingresar a un directorio

Estoy ejecutando un entorno que requiere algunas versiones de herramientas muy específicas. Los comandos para configurar el entorno están en un script llamadoset_foo_env.sh

Supongamos que tengo un directorio ~/repository/foo/. ¿Es posible ejecutarlo set_foo_env.shtan pronto como ingreso al foodirectorio?

Respuesta1

Puede usar PROMPT_COMMAND, el código especificado en PROMPT_COMMAND se ejecuta antes de que bash genere el mensaje.

# Call function 'foo'
PROMPT_COMMAND=foo

# The function
foo() {
        if [[ $PWD == "$HOME/repository/foo" ]]; then
              set_foo_env.sh  
        fi
}

Tenga en cuenta que PROMPT_COMMAND es específico de bash y esta no es una forma eficiente porque se llamará a la función foo cada vez que bash dibuje el mensaje.

Respuesta2

Cambie el cda una función para ejecutar lo real cdy ejecute su script luego.

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

Esto supone que:

  1. El set_foo_env.shsería específico de un solo directorio, y
  2. Eso set_foo_env.shdebería cambiar el entorno del shell existente.

Si desea un archivo global basado en rutas, mire la pregunta que mencionó manatwork (Ejecutar scripts bash al ingresar a un directorio).

información relacionada