Jim Meyering <j...@meyering.net> writes:

> Bruce Korb wrote:
>> Does that "git diff-index" really need to be run in a separate
>> shell invocation?
>>> dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
>
> Yes.  As I recall, that was required in order to ensure that even when
> the shell fails to find a "git" program, the stderr output
> is redirected.

What the Autoconf manual says about this is:

       On the other hand, some shells, such as Solaris or FreeBSD
    `/bin/sh', warn about missing programs before performing redirections.
    Therefore, to silently check whether a program exists, it is necessary
    to perform redirections on a subshell:

         $ /bin/sh -c 'nosuch 2>/dev/null'
         nosuch: not found
         $ /bin/sh -c '(nosuch) 2>/dev/null'
         $ bash -c 'nosuch 2>/dev/null'

I always understood the use of "sh -c" in these examples as a
device to show which shell was being invoked, not to advise
actually using "sh -c".  Rather, I thought that the advice was to
put the invocation in a subshell, as "(nosuch) 2>/dev/null".
-- 
Only wimps use tape backup: _real_ men just upload their important stuff
on ftp, and let the rest of the world mirror it ;)
        -- Linus Torvalds


Reply via email to