why?
Because bash feels clunky to write and work with for anything non-trivial, especially compared to other scripting languages.
Why not another scripting language (no compile necessary)?
Because bash and sh are installed nearly everywhere. Any other scripting language means the user is required to have that installed, and that is far less likely to be the case.
If I could write my scripts in a nice syntax, but be sure my users will be able to use it effortlessly by distributing to them compiled versions, then that would make both of our lives easier!
Thoughts? Are there any languges that do this?
Unfortunately shell script is not as portable as you might be anticipating. Different distro run different shells, with different settings, and also different tools. Think BSD grep vs GNU grep.
I’ve seen multi distro scripts that are also able to bootstrap their own assets for each distro/architecture. Don’t see why you wouldn’t be able to check that considering
/etc/os-release
exists in pretty much every unix like environment.And having it run on a specific shell type could also be an option.
That’s what the POSIX spec is for. BSD and GNU commands may differ, but they both support what’s specified by POSIX. By limiting your calls to it, you can write portable script with no problem (I’ve been doing that for the last few years without issue).
I discovered a fun one the other day: there is literally no way to represent word-boundary anchors that’s valid in both GNU
sed
and BSDsed
. https://unix.stackexchange.com/a/393968/38050