If the interpreter wasn't found, execvp returns ENOENT. The existing error checking did not differentiate between file not found and interpreter not found. While the former may be an incentive to start inspecting aliases, the latter is an error because the desired script is actually found. This patch explicitly makes the interpreter failure a fatal error. Signed-off-by: Frans Klaver <fransklaver@xxxxxxxxx> --- As far as I'm concerned, this is a bug fix. However, since it really is a change in git's behavior, we can still consider postponing this patch. run-command.c | 7 +------ t/t0061-run-command.sh | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/run-command.c b/run-command.c index ab14910..9179daf 100644 --- a/run-command.c +++ b/run-command.c @@ -201,12 +201,7 @@ static void inspect_file(struct strbuf *fn, int err, const char *argv0) } free(i); strbuf_release(fn); - if (err == ENOENT) { - error("%s", es); - exit(127); - } else { - die("%s", es); - } + die("%s", es); } strbuf_release(fn); diff --git a/t/t0061-run-command.sh b/t/t0061-run-command.sh index a4585b0..f08163f 100755 --- a/t/t0061-run-command.sh +++ b/t/t0061-run-command.sh @@ -76,12 +76,12 @@ test_expect_success POSIXPERM 'run_command reports EACCES, interpreter fails' ' grep "bad interpreter" err ' -test_expect_failure POSIXPERM 'run_command reports ENOENT, interpreter' ' +test_expect_success POSIXPERM 'run_command reports ENOENT, interpreter' ' cat non-existing-interpreter >hello.sh && chmod +x hello.sh && test_must_fail test-run-command start-command-ENOENT ./hello.sh 2>err && - grep "error: cannot exec.*hello.sh" err && + grep "fatal: cannot exec.*hello.sh" err && grep "bad interpreter" err ' -- 1.7.8.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html