git のソースを見ると、git.c に次のコメントがあります。
/*
* 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.
*/
を呼び出すと、exec_cmd.cgit --exec-path
で呼び出すことになります。それは次のようになります。const char *git_exec_path(void)
const char *env;
if (argv_exec_path)
return argv_exec_path;
env = getenv(EXEC_PATH_ENVIRONMENT);
if (env && *env) {
return env;
}
return system_path(GIT_EXEC_PATH);
これで、_argv_exec_path_ が設定されます--exec-path=/some/where
。環境変数が設定されていないと述べました。 MakefileGIT_EXEC_PATH
でコンパイル中に定義されます。逆に言えば、 just と定義されているようです。そのため、代わりにsystem_path()が何をするかを調べる必要があります。libexec/git-core
RUNTIME_PREFIX
が定義されているかどうかはわかりません。しかし、Makefile を調べていると、接頭辞のデフォルトが$(HOME)
. これがあなたの問題の原因である可能性があると思います。
簡単な答えは、これを に入れることです~/.bashrc
:
export GIT_EXEC_PATH=/opt/local/libexec/git-core
何が起こっているのかをもっと知りたい場合は、git を使用してport -d upgrade -f git-core
(または同様の方法で) 再コンパイルし、ビルド ログをよく見て、プレフィックスが設定されている場所を確認する必要があります。ちなみに、port cat git-core
の頻繁な使用法を示して${prefix}
いるので、(できれば) 明らかなはずです。