From: Jeff King Date: Tue, 17 Apr 2012 22:14:50 GMT Subject: Re: [PATCH] Do not use SHELL_PATH from build system in prepare_shell_cmd on Windows Message-ID: <20120417221449.GC10797@sigill.intra.peff.net> In-Reply-To: <4F8D15B9.70803@viscovery.net> On Tue, Apr 17, 2012 at 09:03:21AM +0200, Johannes Sixt wrote: > diff --git a/run-command.c b/run-command.c > index 2af3e0f..e4edede 100644 > --- a/run-command.c > +++ b/run-command.c > @@ -94,7 +94,11 @@ static const char **prepare_shell_cmd(const char **argv) > die("BUG: shell command is empty"); > > if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) { > +#ifndef WIN32 > nargv[nargc++] = SHELL_PATH; > +#else > + nargv[nargc++] = "sh"; > +#endif > nargv[nargc++] = "-c"; > > if (argc < 2) It sounds like the real problem is not the use of a configurable shell, but rather the use of an absolute path. Should you maybe try to pass the basename of SHELL_PATH? Or maybe that is not even worth worrying about, as somebody on Windows is not going to ever set SHELL_PATH, since it is not like they are working around a non-POSIX "sh" included with the operating system (which is why people on Solaris typically set SHELL_PATH). -Peff