2010-07-18 5 views
15

Normalmente estoy usando zsh, que proporciona el gancho chpwd(). Es decir: si cwd es modificado por el cd incorporado, zsh llama automáticamente al método chpwd() si existe. Esto permite configurar variables y alias que dependen de cwd.¿Hay un gancho en Bash para saber cuándo cambia la cwd?

Ahora quiero portar este bit de mi .zshrc a bash, pero encontré que chpwd() no es reconocido por bash. ¿Ya existe una funcionalidad similar en bash? Soy consciente de que redefinir los trabajos de cd (ver a continuación), sin embargo, estoy buscando una solución más elegante.

function cd() 
{ 
    builtin cd [email protected] 
    chpwd 
}
+4

¿Por qué 'function cd' no es elegante? – user123444555621

+0

Me gusta su solución, se ve limpio! – antonagestam

+0

[Pregunta similar en Unix y Linux] (http://unix.stackexchange.com/questions/21363/execute-bash-scripts-on-entering-a-directory). Su solución es la misma que usaría, no veo por qué la considera poco elegante. – Gilles

Respuesta

10

Usted tendría que utilizar un DEBUG trap o PROMPT_COMMAND.

Ejemplos:

trap chpwd DEBUG  # calls the function before each command 

PROMPT_COMMAND=chpwd # calls the function after each command 

Tenga en cuenta que la función definida en PROMPT_COMMAND se ejecuta antes de cada rápidas, sin embargo, incluso las vacías.

+2

un pequeño fragmento de ejemplo sería genial. –

+0

Parece bueno. +1 para el fragmento de código – marcio

+1

@marcioAlmada: agregué ejemplos. –

Cuestiones relacionadas