Есть ли в Bash хук, чтобы узнать, когда меняется cwd? - PullRequest
16 голосов
/ 18 июля 2010

Я обычно использую zsh, который предоставляет хук chpwd ().То есть: если cwd изменяется встроенным cd, zsh автоматически вызывает метод chpwd (), если он существует.Это позволяет устанавливать переменные и псевдонимы, которые зависят от cwd.

Теперь я хочу перенести этот бит моего .zshrc на bash, но обнаружил, что chpwd () не распознается bash.Есть ли подобная функциональность в bash?Я знаю, что переопределение CD работает (см. Ниже), но я стремлюсь к более элегантному решению.

function cd()
{
    builtin cd $@
    chpwd
}

1 Ответ

13 голосов
/ 18 июля 2010

Вам придется использовать DEBUG trap или PROMPT_COMMAND.

Примеры:

trap chpwd DEBUG        # calls the function before each command

PROMPT_COMMAND=chpwd    # calls the function after each command

Обратите внимание, что функция, определенная в PROMPT_COMMAND, запускается до каждая подсказка, хотя, даже пустая.

...