Re: [PATCH] t0300-credentials: Word around a solaris /bin/sh bug
From: Jeff King <hidden>
Date: 2016-06-15 22:52:55
On Thu, Feb 02, 2012 at 05:02:17PM -0800, Junio C Hamano wrote:
Jeff King [off-list ref] writes:quoted
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.sh
When 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