Re: [PATCH] t0300-credentials: Word around a solaris /bin/sh bug
- From
Jeff King <peff@peff.net>
- Date
- Feb 3, 2012, 12:06 UTC
- Message-ID
- <20120203120657.GB31441@sigill.intra.peff.net>
- In-Reply-To
- <7vr4ycu3ty.fsf@alter.siamese.dyndns.org>
On Thu, Feb 02, 2012 at 05:02:17PM -0800, Junio C Hamano wrote:
Show 10 quoted lines
> Jeff King <peff@peff.net> writes: > > > I wonder if a better solution is to use a known-good shell instead of > > trying to work around problems in a bogus shell. > > Yeah, I think that is a better approach. > > What prevents us from doing 's|^#! */bin/sh|$#$SHELL_PATH|' on everything > in t/ directory (I am not suggesting to do this. I just want to know if > there is a reason we want hardcoded "#!/bin/sh" for some instances).
The quoting is more annoying, because you usually don't want interpolation on the rest of the lines of your embedded script. So:
cat >foo.sh <<\EOF #!/bin/sh echo my arguments are "$@" EOF
cannot have the mechanical replace you mentioned above. It would need:
cat >foo.sh <<EOF #!$SHELL_PATH echo my arguments are "\$@" EOF
or:
{
echo "#!$SHELL_PATH" &&
cat <<EOF
echo my arguments are "$@"
EOF
} >foo.shWhen I have hard-coded "#!/bin/sh", my thinking is usually "this is less cumbersome to type and to read, and this script-let is so small that even Solaris will get it right".
-Peff