如何动态确定git核心文件夹的位置?

如何动态确定git核心文件夹的位置?,git,Git,一个快速的谷歌说文件夹应该位于/usr/share/git-core,但我认为这取决于它的安装方式,因为我的文件夹位于/usr/local/share/git-core,而我同事的文件夹位于其他地方 是否有命令或变量可用于输出git core的绝对位置 $ git --exec-path /usr/lib/git-core 可通过该标志的参数或GIT_EXEC_PATH环境变量重写 如果您有多个git副本,请尝试~/homebrew/bin/git或/usr/bin/git或任何指向Xcode

一个快速的谷歌说文件夹应该位于
/usr/share/git-core
,但我认为这取决于它的安装方式,因为我的文件夹位于
/usr/local/share/git-core
,而我同事的文件夹位于其他地方

是否有命令或变量可用于输出git core的绝对位置

$ git --exec-path
/usr/lib/git-core
可通过该标志的参数或GIT_EXEC_PATH环境变量重写

如果您有多个git副本,请尝试
~/homebrew/bin/git
/usr/bin/git
或任何指向Xcode副本的路径

git查找子命令的整个过程实际上很简单:它查找exec_path的值——从argv、环境或编译时值。然后它把这个推到路径的前面

/*
 * We use PATH to find git commands, but we prepend some higher
 * precedence paths: the "--exec-path" option, the GIT_EXEC_PATH
 * environment, and the $(gitexecdir) from the Makefile at build
 * time.
 */
setup_path();
(与此相反,它只是选择了其中一个。)

更旧版本的git只是用所有git where命令污染了您的路径

如果您试图诊断或包扎一些古怪的东西,您可以尝试使用git core的正确路径来操纵路径,但调用git的正确副本更有可能奏效

$ echo '/usr/bin/env' > ~/local/bin/git-env
$ chmod +x ~/local/bin/git-env
$ env - PATH=~/local/bin /usr/bin/git env
PATH=/usr/lib/git-core:/home/josh/local/bin
PWD=/home/josh
$

find
命令?谢谢您的回答!有趣的是,似乎有不止一个
git-core
,因为当我运行该命令时,我得到了/usr/local/cillar/git/2.9.2/libexec/git-core,但在
/usr/local/share/git-core
上也有我的
git-core
。它们看起来也不一样——exec路径中的一个包含所有命令,而我正在寻找的一个只包含
contrib
模板。你知道有没有命令去另一个吗?也许其中一个是自制的进入地下室的符号链接?没错。谢谢@马克·斯蒂克利哇,这也把我绊倒了。但是这个符号链接指向
/usr/local/ceral/git/2.9.2/
***
共享
***
/git核心
,我不知道它实际用于什么。这非常令人困惑。