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

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

Можно ли настроить скрипт на запуск в определенном каталоге при входе cdв него?

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

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

решение1

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

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

решение2

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

function cd() {
  command cd "$@" || return

  if [[ -d .git ]]
  then
    git status --short
  else
    ls -al
  fi
}

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

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

решение3

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

alias cdgit="cd /foo; git status"

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

Связанный контент