So
Debian is going to follow Ubuntu in making /bin/sh be dash
by default.
The technically correct side of me welcomes the change, but the realist in
me doesn't think it's such a good idea.
It's all fine and dandy to have the entire Debian distribution behaving
itself correctly with /bin/sh being dash, but the
distribution is never the end of the story, there's always third-party
software, and in large Linux shops like where I work, there's going to be
bogloads of in-house scripts.
When Ubuntu 8.04 came out with /bin/sh being dash, we tried,
valiantly to keep it that way, under the ostensible cover of technical
correctness, and not wanting to deviate from the distribution default. We
even had a massive fixit and tracked down and fixed all of the scripts that
has bashisms in them and made them explicitly use bash.
The problem was we could never track down 100% of the scripts. It got a lot
harder when you had to take into account shell code embedded in scripts of
other languages. That was when we threw in the towel and just made
/bin/sh be bash instead, and as long as it stays that way, people
will keep writing #!/bin/sh scripts with bashisms in it, so the
problem will never go away.
So if we can't do it, when we've got all of our scripts in a central
repository and can do all sorts of analysis across it, then I pity the
people in smaller organisations with a greater hodge-podge of scripts. It'll
be a nightmare.
It's also unfortunate that popcon is unable to report how many
users change /bin/sh back to bash, so we'll have no idea how many
people reject the change for pragmatic reasons like we did.
I think some of the arguments for doing it are flawed:
-
It'll speed up boot times
-
Really? How much? Show me the numbers. Who cares anyway? Laptops suspend,
servers aren't supposed to get rebooted frequently, and I'd really like to
know how much of a dramatic difference it makes. I question the value. Also,
the set of init scripts within a distribution is more defined than all
possible shell scripts in the world, so why not make all of Debian's init
scripts use /bin/dash instead and get the same outcome with less
collateral damage?
-
It'll use less memory
-
Really? How much? Show me the numbers. So what? Do it on embedded systems
where memory is tight and third-party scripts are less like to be a problem,
sure, but on a modern desktop or server? How about focusing on how much
memory Firefox uses instead?
So yeah, I'm not terribly overjoyed by this decision. We'll see how it pans
out.