Запустить сценарий оболочки при навигации по каталогу с помощью cd

Доступно ли устанавливать сценарий для запуска в определенном каталоге, когда вы cd в него?

Например, если /foo – это каталог с проектом git , возможно ли, когда cd /foo автоматически запускает git status или некоторые скрипты npm ?

Пожалуйста, не связывайте ответ строго с git , представьте, что это может быть любая другая команда / скрипт.

Один из способов сделать это – с помощью команды alias :

 alias cdgit="cd /foo; git status" 

Затем вы выполняете cdgit и вы переходите в каталог /foo и exec git status

Вы можете заменить cd на функцию, которая добавляет любую требуемую обработку:

 cd() { builtin cd "$@" # Do whatever you want here } 

Я использую нечто похожее на ответ Стивена Китта в моем .bashrc :

 function cd() { command cd "$@" || return if [[ -d .git ]] then git status --short else ls -al fi } 

Вы можете создавать дополнительные условия для обработки различных вещей по мере необходимости.

ПРИМЕЧАНИЕ. Поскольку мы сбрасываем ссылку на команду cd , вам нужно использовать command cd , builtin cd или \cd чтобы функция не вызывала себя и не возвращалась навсегда. По этой причине некоторым может показаться полезным переименовать эту функцию.