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?

31 points
*

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.

permalink
report
reply
8 points
*

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.

permalink
report
parent
reply
2 points

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 BSD sed. https://unix.stackexchange.com/a/393968/38050

permalink
report
parent
reply
2 points
*

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).

permalink
report
parent
reply
2 points

I haven’t used it, but this node package looks enticing

permalink
report
reply
2 points

Doesn’t powershell do this? I’ve been learning powershell, and they keep making a tech agnostic claim along these lines, but I haven’t tested it on Linux yet.

permalink
report
reply
5 points
*
Deleted by creator
permalink
report
parent
reply
2 points

I used it on a Mac and on Windows, for me it feels very modern when compared to bash (although I never was a bash expert).

However, the problem is that it’s not installed by default on Linux (at least on most distros as far as I know) and Mac, and Windows machines might have an outdated version which you’ll have to take into account.

So unfortunately it doesn’t meet OP’s criteria that it should “just work” without installing an interpreter.

permalink
report
parent
reply
4 points

Not quite - even in PowerShell 7 there are some features that only work on Windows and Windows only comes with PowerShell 5.1 by default.

permalink
report
parent
reply
55 points
*

python is usually the next step up in admin land

python is a pretty standard install on linux systems since so many things like you’re talking about use it

permalink
report
reply
18 points

Not only that it’s basically everywhere, but even if it’s not, you can compile it using something like nuitka and still use it.

permalink
report
parent
reply
6 points

Huh, why doesn’t python just ship this? Managing python installs is annoying as hell.

permalink
report
parent
reply
3 points

This is about python packaging, like making/getting libraries/apps rather than compiling binaries, but it’s pretty relevant here:

https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/

permalink
report
parent
reply
6 points

I would guess mostly because python interpretes are just about everywhere.

Also the binaries compiled with nuitka end up being much bigger in size. A simple script of a few kb can and up in the hundreds of mb when you start compiling the dependencies, so it’s not a perfect solution.

permalink
report
parent
reply
7 points

Python or Perl. IIRC, I’ve seen systems with a Perl install by default, but not Python.

permalink
report
parent
reply
6 points

https://github.com/tdenniston/bish is one such language.

I’d also recommend Shellcheck which helps prevent many problems with shell scripts.

permalink
report
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.9K

    Monthly active users

  • 1.7K

    Posts

  • 29K

    Comments