Можно ли настроить скрипт на запуск в определенном каталоге при входе 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