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?

  • @roo@lemmy.one
    link
    fedilink
    22 years ago

    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.

    • @alokir@lemmy.world
      link
      fedilink
      22 years ago

      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.

    • @Gurfaild@feddit.de
      link
      fedilink
      42 years ago

      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.

  • I’m gonna pile in with yet another option that isn’t a language that compiles to bash…

    Consider Ruby for easier shell scripting. With its back tick syntax for executing shell commands, it’s quick to use when you want to glue together a series of commands. …and then you get to use a sane syntax for your script’s logic.

    Ex:

    # Check my history for all usages of the xsv command
    # and extract the filename
    csv_files = `grep ~/.zsh_history "xsv" | awk '{print $3}'`.
                         split("\n").
                         map(&:chomp)
    
    # list any csv with my phone number
    csv_files.select { | filename|
      `grep #{filename} "555-1234"`.chomp != ""
    }.each {|filename| puts filename}
    
  • @aport@programming.dev
    link
    fedilink
    31
    edit-2
    2 years ago

    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.

    • Scott
      link
      fedilink
      English
      8
      edit-2
      2 years ago

      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.

    • z3bra
      link
      fedilink
      2
      edit-2
      2 years ago

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

    • @railsdev@programming.dev
      link
      fedilink
      02 years ago

      Hate this because most bootstrapping I do is within a Dockerfile where I don’t want to install the entire runtime and its dependencies just to complete a build step.

  • @sim642@lemm.ee
    link
    fedilink
    72 years ago

    Why not another scripting language (no compile necessary)?

    But you’re describing compiling that new language to bash…

    • CyclohexaneOP
      link
      fedilink
      52 years ago

      Yes, I’m answering why I am not taking a completely other scripting language

      In other words, I am making the case for a compiled language by answering the question of why i am not considering a language that doesn’t need it.

  • @theherk@lemmy.world
    link
    fedilink
    52 years ago

    Although it doesn’t crosspile to bash, I think a good middle ground is bitfield/script. Basically you can do many things you would normally script very simply with nice syntax and distribute a binary.

  • neil
    link
    fedilink
    54
    edit-2
    2 years ago

    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

  • @dack@lemmy.world
    link
    fedilink
    132 years ago

    I don’t see why bash would be used at all here. If you want something that doesn’t need another interpreter, then just compile a binary.

    • CyclohexaneOP
      link
      fedilink
      82 years ago

      Possible use case: scripts that are found in a codebase for doing… Codebase things. Like setting up dev environment for example.

      • @dack@lemmy.world
        link
        fedilink
        52 years ago

        But then building it still requires whatever scripting tool you use. Including the bash-ified version would not for practice, as it wouldn’t be very human readable and would have to be kept in sync with the source script. It’s much cleaner and simpler to just require python for your build environment.

  • Martin
    link
    fedilink
    142 years ago

    Why not use a compiled language that compiles to fat binaries (rust, go etc)?

    • Dark Arc
      link
      fedilink
      English
      6
      edit-2
      2 years ago

      It’s worth noting any compiled language can make a “fat” binary (e.g., C++), you just need to use static linking.

  • @lysdexic@programming.dev
    link
    fedilink
    English
    12 years ago

    Why not another scripting language (no compile necessary)? (…) 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!

    Would it make sense to describe your idea as a typescript for bash or sh?

  • @cobra89@beehaw.org
    link
    fedilink
    22 years ago

    There’s always Golang which compiles to an x86 binary. But that’s probably not what you want since you probably want something readable and editable on the end system.

    • CyclohexaneOP
      link
      fedilink
      52 years ago

      I’m familiar with NuShell and looks very nice. But unfortunately yeah, not what I’m looking for. It would require installation by user.