I'm a fairly new user in Bash and Git in general and I'm scratching my head about what the problem could be. I'm creating a code that checks if .gitconfig exists and if it doesn't it allows you to configure it almost automatically using a read command to get your email and username and apply them in a line of code.
Code example:
#!/bin/bash
# colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NO_COLOR='\033[0m'
# function git
git () {
printf "${RED}Set your Git email\n${NO_COLOR}"
read GIT_AUTHOR_EMAIL
git config --global user.email "$GIT_AUTHOR_EMAIL"
printf "${RED}Set your Git username\n${NO_COLOR}"
read GIT_AUTHOR_USERNAME
git config --global user.name "$GIT_AUTHOR_USERNAME"
git config --list | grep user.email && git config --list | grep user.name
}
# git check & configuration
if [ -f ".gitconfig" ]; then
printf "${YELLOW}Git was previously configured\n${NO_COLOR}"
exit
else
git
printf "${YELLOW}Done\n${NO_COLOR}"
exit
fi
If it doesn't exist, it calls a function to configure it but after some quick debugging using the set -x
command I figured out the file .gitconfig is not created at all but it does when I do it myself outside a function. All it does is go back to read GIT_AUTHOR_EMAIL
, apply the code git config --global user.email "$GIT_AUTHOR_EMAIL"
and go back to the first read command. I want the code to check for .gitconfig and if it exists it'll also ask if the user wants to re-configure their Git details. I'm super close on doing so.
Is there any way I can fix it or do it another way?
Once you've defined the function git
, any invocation of the name git
in that shell process will refer to that shell function. If you'd like to invoke the program git
, then you need to prefix it with the built-in command
:
command git config --global user.name "$GIT_AUTHOR_USERNAME"
If it wasn't your intention to override the git
command, then you probably want to name your shell function differently, which avoids the problem altogether.