#bash #git #shell #git-config
#bash #git #оболочка #git-config
Вопрос:
Я довольно новый пользователь в Bash и Git в целом, и я ломаю голову над тем, в чем может быть проблема. Я создаю код, который проверяет, существует ли файл .gitconfig, и если его нет, он позволяет вам настроить его почти автоматически, используя команду чтения, чтобы получить ваш адрес электронной почты и имя пользователя и применить их в строке кода.
Пример кода:
#!/bin/bash
# colors
RED='33[0;31m'
GREEN='33[0;32m'
YELLOW='33[1;33m'
NO_COLOR='33[0m'
# function git
git () {
printf "${RED}Set your Git emailn${NO_COLOR}"
read GIT_AUTHOR_EMAIL
git config --global user.email "$GIT_AUTHOR_EMAIL"
printf "${RED}Set your Git usernamen${NO_COLOR}"
read GIT_AUTHOR_USERNAME
git config --global user.name "$GIT_AUTHOR_USERNAME"
git config --list | grep user.email amp;amp; git config --list | grep user.name
}
# git check amp; configuration
if [ -f ".gitconfig" ]; then
printf "${YELLOW}Git was previously configuredn${NO_COLOR}"
exit
else
git
printf "${YELLOW}Donen${NO_COLOR}"
exit
fi
Если он не существует, он вызывает функцию для его настройки, но после некоторой быстрой отладки с помощью set -x
команды я разобрался с файлом .gitconfig не создается вообще, но это происходит, когда я делаю это сам вне функции. Все, что он делает, это возвращается read GIT_AUTHOR_EMAIL
, применяет код git config --global user.email "$GIT_AUTHOR_EMAIL"
и возвращается к первой команде чтения. Я хочу, чтобы код проверял .gitconfig, и если он существует, он также спросит, хочет ли пользователь перенастроить свои данные Git. Я очень близок к этому.
Могу ли я как-нибудь это исправить или сделать по-другому?
Ответ №1:
После того, как вы определили функцию git
, любой вызов имени git
в этом процессе оболочки будет ссылаться на эту функцию оболочки. Если вы хотите вызвать программу git
, вам нужно добавить к ней префикс встроенного command
:
command git config --global user.name "$GIT_AUTHOR_USERNAME"
Если вы не собирались переопределять git
команду, то, вероятно, вы захотите назвать свою функцию оболочки по-другому, что позволит полностью избежать проблемы.
Комментарии:
1. Присвоение функции имени чему-то другому кажется гораздо лучшим решением.
2. По-видимому, простое переименование функции оболочки, похоже, устраняет проблему. Спасибо, что указали на это!