Re: #! incompatible -- binfmt_script.c broken?

Chris Adams (cmadams@hiwaay.net)
Wed, 4 Dec 2002 20:59:45 -0600


Once upon a time, Matthias Andree <matthias.andree@gmx.de> said:
>Nope. It cannot be correct if it breaks compatibility without giving us
>any advantage.

Compatibility with _what_? Linux works exactly the same as Tru64 Unix
for example - it supplies everything after the program to execute as the
first argument. Are you going to make the kernel honor the setting of
the IFS environment variable? Should it split only on space? What
about tab? Or $LANG (maybe space is different in different character
sets)?

The difference is that Tru64's /bin/sh (and /usr/bin/posix/sh and
/usr/bin/ksh) stops processing the argument and continues without error
after it hits a (single or double) dash and a space, while bash (and
pdksh and ash and zsh) don't handle that.

Try the following under your shell. On Solaris and Tru64 sh and ksh, it
is handled with no error. Under bash (on Linux, Solaris, and Tru64), it
returns an error:

$ set "-- xyzzy"
$ echo $?

According to SUSv3, bash is not compliant, because for set, under the
section "CONSEQUENCES OF ERRORS" is listed "None." and the "EXIT STATUS"
is "Zero."

Fix the shell(s).

-- 
Chris Adams <cmadams@hiwaay.net>
Systems and Network Administrator - HiWAAY Internet Services
I don't speak for anybody but myself - that's enough trouble.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/