4 ms·
A shell script _is_ a way of specifying what binary to run. It's just that it's standardised and relatively well thought-out, as opposed to one-off hacks, like
by trasz 4y ago
A shell script _is_ a way of specifying what binary to run. It's just that it's standardised and relatively well thought-out, as opposed to one-off hacks, like with systemd.
- ungamed 4y agoI find that shell scripts feel like the hack compared to systemd startup scripts.
- bigpeopleareold 4y agoPossibly. But, FWIW, this was posted a few days ago and it was good at explaining the design decisions in NetBSD's rc system over earlier versions that FreeBSD uses as well (there are a few differences): https://news.ycombinator.com/item?id=31637755 https://news.ycombinator.com/item?id=31637755.
- nerdponx 4y agoMaybe if it was in Lua or Scheme. But Bourne shell script is a nasty messy language. Pretty much the only thing about shell scripting that is useful and not easy to do in other languages is input/output redirection and piping. Service managers should take care of things like figuring out where stdout and stderr logs are sent to, so you shouldn't have to do that stuff in your service scripts. Thus there is no benefit to shell compared to other languages / formats, and there are a lot of problems with shell scripting otherwise.
- trasz 4y ago>Service managers should take care of things like figuring out where stdout and stderr logs are sent to, so you shouldn't have to do that stuff in your service scripts. You don't have to. The fact that Linux had anachronisms like that wasn't because of shell scripts, it's an entirely orthogonal issue; a typical rc script in, say, FreeBSD, looks like this: https://github.com/freebsd/freebsd-src/blob/main/libexec/rc/rc.d/ctld https://github.com/freebsd/freebsd-src/blob/main/libexec/rc/.... It's declarative, it's easy to understand, but it also provides you with flexibility when you need it, as opposed to one-off hacks with custom, fixed functionality and random syntax.
- nerdponx 4y agoYou're justifying my point! There is no reason (other than historical) why this should be a Bourne-flavored shell script compared to any other scripting language. You could just as well write this in Lua or Scheme. Even the fact that there is runtime information embedded in the comments should be a big red flag that the wrong tool was chosen for this purpose.
- marginalia_nu 4y agoTo be fair, you can just change the hashbang and write your start up script in lua instead if you have an axe to grind with sh for some reason.
- trasz 4y agoYes - except you can't really expect anyone to know Lua or Scheme, while you can assume every even remotely competent Unix/Linux system administrator or power user to know sh(1).