質問: お世話になります。 Gitでは、`git-xxx` というスクリプト(実行権限付でPATH下にあるもの)があれば、**git xxx** という形で実行できるという特殊な仕様がありますが、この仕様の仕組みを知りたいです。 ただ単純に環境変数PATHを調べて、その`bin`ディレクトリ下にある`git-xxx`スクリプトを引っ張ってきてるだけなんでしょうか... Gitのソースコードをダウンロードして調べてみたのですが、コードの量が膨大すぎてなかなか該当箇所のコードを見つけることができませんでした。 この仕様の仕組みをご理解されてる方がいらっしゃいましたら、ぜひ回答して頂けると幸いです。 自分が理解できたら、Pythonで車輪の再発明をしてみたいのです。 どうかよろしくお願い致します。
回答: `main` 関数があるのは git.c です。 1. `main` 2. `run_argv` 3. `handle_builtin` (組み込みコマンドを処理) 4. ↑exitしなかったら(組み込みコマンドとして処理されなかったら) `execv_dashed_external` (ダッシュ付き外部コマンドをexec) 5. `"git-xxx"` というコマンド名を組み立てて `run_command_opt_v_opt` で run-command.c の中へ 6. run-command.c の中を巡り巡って、 `PATH` の中からコマンドを探して実行するのは `execvp(3)` ですね。