On Mon, Jan 2, 2023, 11:18 AM Clem Cole <clemc(a)ccc.com> wrote:
On Mon, Jan 2, 2023 at 1:13 PM Larry McVoy <lm(a)mcvoy.com> wrote:
My scripts worked with /bin/sh being whatever it was.
It's interesting to me that other old timers, like Clem, are saying
exactly the same thing as I am. Are we all wrong?
Exactly -- if you are disciplined -- it just works. It's not magic.
I've only got 30 years experience in writing portable shell scripts... But
I have a slightly different take. There is an element of luck involved.
There are a number of constructs that are valid in v7 shell that aren't
completely portable due to bugs in vendor shells. The luck part comes in
either you know what to avoid because you got unlucky and got burned in the
past. Or you got lucky and never thought to write something like that so it
just works. With experience, you know what works...
I notice the old timers hedged a little bit by saying things like
"virtually all" so maybe they had a bit of bad luck now and again...
Also, the really aweful systems are rare enough today that most folks on
this list have had the good luck not to need to run on them... :)
You can get super close though, but I'll bet there's some scripts that work
only because they didn't run on, say, Eunice...
But luck favors the prepared... and making the effort to try to be portable
will help when you have to run on dash, or one of the BSD shells that might
not have $<(cmd) or some other useful but not universal feature...
Warner
ᐧ