sh changes
Guy Harris
guy at sun.uucp
Thu Jun 19 06:23:35 AEST 1986
> I hit an incompatability between the 4.2 BSD sh and Sun 3.0 sh.
No, you didn't. Keep reading.
> Here are the relevant parts of the manual pages:
>
> From 4.2 BSD system:
>
> ${parameter-word}
> If parameter is set, substitute its value; otherwise
> substitute word.
> ...
>
> From Sun 3.0 system:
>
> ${parameter:-word}
> If parameter is set and is non-null, substitute its
> value; otherwise substitute word.
> In case you missed it, the difference is the extra colon in the Sun 3.0
> system.
And the phrase "and is non-null", which appears in the description in the
Sun 3.0 manual. Like I said, keep reading. In the 3.0 manual, below that,
it says:
If the colon (:) is omitted from the above expressions,
the shell only checks whether "parameter" is set.
So it's a compatible enhancement; you can leave the colon out, and if you do
it acts like earlier shells.
> Questions: when and why was this change made?
It was made in Sun UNIX 3.0, and was made because the System V Release 2
shell, which is the Sun UNIX 3.0 shell, is better than the 4.2BSD shell
(faster, more functional, less buggy, you name it).
> Are there any other variants of Unix with this change?
Any variant using a System III or later shell.
> Has anybody's command file broken on account of this?
Since it's a compatible enhancement, I tend to doubt it.
--
Guy Harris
{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
guy at sun.com (or guy at sun.arpa)
More information about the Comp.unix
mailing list