I almost exclusively use bash. Not because of a particular love of bash, but just because that's the default install on Linux (and even OSX). Consequently, I don't know what the real differences are between bash and other shells.
It's possible the author is like me: because he's not familiar with what the differences between the shells are, he can't say what does and does not apply to other shells.
* zsh has a ton of interactive chrome built-in, and a lot of it is on by default.
This leads to some incompatibility with bash for scripting purposes
the contextual completion stuff is infuriating when it's overly restrictive
* A pure bourne shell (like dash) by nature doesn't support bashisms
like $() as an alternative to ``
On almost all gnu systems /bin/sh is a link to bash
which checks $0 and operates in sh mode
Unfortunately bash's sh mode is completely broken
it allows most bash-specific syntax
so almost a lot of Linux users's #!/bin/sh scripts really need bash
The takeaway is that you should give up and use bash, or write your own shell if you're an asshole (I have done this).
I always like this approach for dangerous (almost anything which messes with files is dangerous ;) ) scripts: output the commands it would execute, but don't execute them. The user can eyeball them and check that those commands are what he wants and copies them into a shell toe xecute them.
7 comments
[ 3.8 ms ] story [ 26.2 ms ] thread90% of the article is applicable for other shells, like zsh or fish.
Why not write "how to debug shell scripts"?
It's possible the author is like me: because he's not familiar with what the differences between the shells are, he can't say what does and does not apply to other shells.
Eshell.
It is nice to write "shell scripts" like "(loop for i in *.el do (byte-compile-file i))".