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.sh
tan pronto como ingreso al foo
directorio?
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 cd
a una función para ejecutar lo real cd
y ejecute su script luego.
cd () {
if builtin cd ${1:+"$@"} && [ -r ./set_foo_env.sh ]; then
. ./set_foo_env.sh
fi
}
Esto supone que:
- El
set_foo_env.sh
sería específico de un solo directorio, y - Eso
set_foo_env.sh
deberí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).