Hi, here is a tiny patch; maybe there is a cleaner way doing this.? -- >8 -- Subject: [PATCH] help_unknown_cmd: do not propose an "unknown" cmd When executing an external shell script like `git foo` with the following shebang "#!/usr/bin/not/existing", execvp returns 127 (ENOENT). Since help_unknown_cmd proposes the use of all external commands similar to the name of the "unknown" command, it suggests the just failed command again. Stop it. Signed-off-by: Michael Schubert <mschub@xxxxxxxxxxxxx> --- help.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/help.c b/help.c index 7654f1b..10b98ba 100644 --- a/help.c +++ b/help.c @@ -383,12 +383,24 @@ const char *help_unknown_cmd(const char *cmd) fprintf(stderr, "git: '%s' is not a git command. See 'git --help'.\n", cmd); - if (SIMILAR_ENOUGH(best_similarity)) { + if (n==1 && !strcmp(cmd, main_cmds.names[0]->name)) + ; + /* + * This avoids proposing the use of a command + * which apparently just didn't work, e.g. + * when executing a shell script git-foo with + * the following shebang: + * + * #!/usr/bin/not/here + * + */ + else if (SIMILAR_ENOUGH(best_similarity)) { fprintf(stderr, "\nDid you mean %s?\n", n < 2 ? "this": "one of these"); for (i = 0; i < n; i++) - fprintf(stderr, "\t%s\n", main_cmds.names[i]->name); + if (strcmp(cmd, main_cmds.names[i]->name)) + fprintf(stderr, "\t%s\n", main_cmds.names[i]->name); } exit(1); -- 1.7.6.132.gdca5 -- 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