我遇到问题,我们以自己的用户身份登录系统约翰多然后必须做一个sudo su - root
能够做行政任务的人。我们在 git 存储库中拥有系统配置文件(这使一切变得更好)。但现在我丢失了用户的设置(约翰多)/home/johndoe/.gitconfig
文件。我尝试设置$GIT_CONFIG
有效的变量,但这仅用于设置存储库配置,而不是全局配置,因此对我来说重要的变量不会被设置:
$ sudo su - root
Hello johndoe. Switching your .gitconfig to /home/johndoe/.gitconfig
# git config --get user.name
John Doe
# git config --get user.email
[email protected]
# git config --global --get user.name
# git config --global --get user.email
#
这是我尝试过的技巧:
$ cat .bashrc
--- snip ---
# load git config of user
LOGINUSER=$(who am i|awk '{print $1}')
if [ "$LOGINUSER" != "root" ]; then
GITCFGFILE="/home/$LOGINUSER/.gitconfig"
if [ -f $GITCFGFILE ]; then
echo "Hello $LOGINUSER. Switching your .gitconfig to $GITCFGFILE"
export GIT_CONFIG=$GITCFGFILE
fi
fi
有没有办法设置全局git配置的路径?
答案1
回答我的问题:不
这是我最终得到的解决方案:我添加了一个/etc/profile.d/gitsetup.sh
包含以下内容的文件:
[ -z "$PS1" ] && return
[ -z "$BASH_VERSION" -o -z "$PS1" ] && return
CFGFILE="/home/$(who am i|awk '{ print $1 }')/.gitconfig"
[ $USER == "root" -a -f "$CFGFILE" -a -n "$CFGFILE" ] && cat $CFGFILE > $HOME/.gitconfig
它在第一行和第二行测试交互式 shell,在第三行读取源 .gitconfig 路径,然后替换根配置文件(如果源文件存在)。
答案2
我经历了所有同样的困难,发现存储的用户信息存在同样的问题,$HOME/.gitconfig
因为我们的 git 版本没有对应的环境变量。
我遇到了一种可能会影响你的情况——.gitconfig
当第二个用户参与时,文件被破坏了——而我自己的解决方案对我(一个新手 git 用户)来说是有问题的,可以在这里找到它: