bash - Git 在函数内部时不会创建 .gitconfig
问题描述
总的来说,我是 Bash 和 Git 的一个相当新的用户,我正在为问题可能是什么而摸不着头脑。我正在创建一个代码来检查 .gitconfig 是否存在,如果不存在,它允许您使用读取命令几乎自动配置它,以获取您的电子邮件和用户名并将它们应用到一行代码中。
代码示例:
#!/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
如果它不存在,它会调用一个函数来配置它,但是在使用set -x
命令进行一些快速调试后,我发现文件 .gitconfig 根本没有创建,但是当我自己在函数之外执行它时它会创建。它所做的只是返回read GIT_AUTHOR_EMAIL
,应用代码git config --global user.email "$GIT_AUTHOR_EMAIL"
并返回第一个读取命令。我希望代码检查 .gitconfig ,如果它存在,它还会询问用户是否要重新配置他们的 Git 详细信息。我非常接近这样做。
有什么办法可以修复它或以其他方式做吗?
解决方案
一旦定义了 function git
,该 shell 进程中对该名称的任何调用都git
将引用该 shell 函数。如果你想调用程序git
,那么你需要在它前面加上内置的command
:
command git config --global user.name "$GIT_AUTHOR_USERNAME"
如果您不打算覆盖该git
命令,那么您可能希望以不同的方式命名您的 shell 函数,这样可以完全避免该问题。
推荐阅读
- python - 检查 pygame 事件队列中的特定事件
- android - 如何在 Flutter 中从基于 Arduino 的蓝牙设备接收数据
- ios - 当用户隐藏应用程序或关闭设备时,swiftui 中的自定义计时器停止在后台获取中计数
- c++ - 错误 C2910。专业化定义错误
- build - 关于在 Debian 上构建影子包的问题
- angular - 如何解决这个 ExpressionChangedAfterItHasBeenCheckedError
- laravel - 将资产复制到 CDN,然后删除旧版本
- azure - 在 customDimensions 中从 json 扩展数据
- postgresql - 转储 PostgreSQL 表和所有引用的数据
- java - 如何使用 TPM EK 加密和解密