Git не позволяет вам переопределять внутренние команды в псевдонимах, потому что это нарушит любой сценарий, который использует те внутренние команды, которые ожидали, что они будут работать как обычно. Это особенно важно, потому что некоторые команды Git являются сценариями оболочки, и переопределение этих команд может нарушить сценарии оболочки Git.
Вы можете переопределить это, написав скрипт оболочки с именем git
, который вы поместите в каталог в $PATH
, и это самый простой способ сделать это. Однако помните, что первый аргумент git
не обязательно должен быть командой: git
принимает большое количество параметров, предшествующих команде, таких как -c
и -C
, и ваш сценарий должен будет проанализировать их во избежание взлома любых других сценариев, которые могут вызывать git
(которые могут, например, включать ваш редактор).
Так что, хотя это возможно, это очень сложно, и любое правильное решение будет довольно продолжительным (вот почему я не пытался сделать это здесь). Как правило, рекомендуемое решение - использовать псевдоним, который не отражает встроенное имя, что гораздо проще.
Однако, если вы хотите это только для интерактивного использования, в вашем $PATH
можно создать сценарий с именем, скажем, git-wrapper
, и сделать что-то подобное внутри:
#!/bin/sh
if [ "$1" = status ]
then
python3 custom_script.py
fi
exec git "$@"
Затем вы можете запустить alias git=git-wrapper
в вашем ~/.bash_profile
или ~/.zshrc
(но не ~/.bashrc
или ~/.zshenv
). Это повлияет только на те случаи, когда вы специально пишете git status
, но не на сценарии. Это может быть достаточно для вас или нет.