Bash-like scripting has become ubiquitous in operating systems, and it makes me wonder about its widespread adoption despite lacking certain programming conveniences found in other languages. While it may not be the ideal choice for large-scale software development, the bash shell possesses unique features that make it well-suited for interactive command-line processing, including pipelining, text manipulation, and file handling. Why isn’t there an alternative that combines the best of bash’s command-line capabilities with the robustness and scalability of traditional programming languages. Why do even new operating systems, such as Redox OS, opt for a similar syntax rather than a completely different programming language?

Here are some of the limitations I find in Bash compared to other programming languages:

  1. Syntax and Expressiveness:

    • Bash has a relatively simple syntax compared to other programming languages. It lacks some advanced language features such as object-oriented programming, complex data structures, and advanced control flow constructs.
    • The syntax of Bash can be less intuitive and more error-prone, especially for complex tasks or larger projects.
  2. Performance:

    • Bash scripts can be slower compared to compiled languages like C or Java. This is because Bash is an interpreted language, and each line of code is interpreted at runtime.
    • Bash may not be the best choice for computationally intensive tasks or applications that require high performance.
  3. Error Handling and Debugging:

    • Error handling and debugging in Bash can be challenging. Bash does not provide robust error handling mechanisms, and error messages can be cryptic and difficult to interpret.
    • Debugging Bash scripts can be cumbersome, as there is limited tooling and debugging support compared to other programming languages.
  4. Portability:

    • While Bash is available on most Unix-like systems, it may not be available on all platforms or versions. This can limit the portability of Bash scripts.
    • Bash scripts may not work as expected on non-Unix systems or require modifications to run on different platforms.
  5. Limited Standard Library:

    • Bash has a limited standard library compared to other programming languages. It lacks comprehensive libraries for tasks such as networking, database access, or advanced data manipulation.
    • Bash often relies on external tools or utilities to perform complex operations, which can introduce dependencies and compatibility issues.
  6. Lack of Modularity and Reusability:

    • Bash scripts can become monolithic and difficult to maintain as they grow in size. Bash does not provide strong mechanisms for modularization or code reuse.
    • Reusing code or creating libraries in Bash can be challenging, leading to code duplication and decreased maintainability.
  • h3ndrik@feddit.de
    link
    fedilink
    arrow-up
    23
    ·
    edit-2
    1 year ago

    why are you stuck with bash? just write a shebang and then your interpreter in the first line of your script.

    i can use bash, python, lua and al kinds of stuff…

    i don’t understand the question. if you mean, why does my shell only accept bash syntax, if i set my shell to bash, idk. use another shell?

    ‘sh’ is kind of the smallest common thing that’s available everywhere. so when you got to script something that needs to run somewhere not under your control, you use ‘sh’. and that’s kind of it works. you’ll find something, that’s been around for some time, otherwise it won’t have spread everywhere. and now you can’t replace it in newer products, because there is so much stuff using it.

    if that isn’t one of your problems, go with my first suggestions and just use python or something like that as your scripting language.

    • clb92@kbin.social
      link
      fedilink
      arrow-up
      12
      arrow-down
      1
      ·
      1 year ago

      I’m gonna get crucified for saying this, but… I write a lot of my scripts in PHP. It’s just a language that I’m very familiar with.

      • db2@lemmy.one
        link
        fedilink
        arrow-up
        11
        ·
        1 year ago

        This isn’t reddit, if that tool does the jobs effectively then great.

      • maegul@lemmy.ml
        link
        fedilink
        arrow-up
        4
        ·
        1 year ago

        crucified?! You’re awesome mate!

        Plus, on the fediverse, PHP’s kinda cool again (I think) … or at least should be.

          • maegul@lemmy.ml
            link
            fedilink
            English
            arrow-up
            2
            ·
            1 year ago

            The backend yes. The frontend (or the default web UI front end) is coded in typescript using a React-like library (called Inferno if I remember correctly).

      • Shareni@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        I’ve used Js for scripts, especially when JSON is involved.

        My logic is to use whichever language is best for the job out of those I’m familiar with, and can be understood by people who might read it. Then I forget logic and try to use lisps wherever possible.

      • h3ndrik@feddit.de
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        1 year ago

        ( my oppinion: i personally don’t like php and js for being too complicated. they are very easy to begin with, which is a good thing. but too difficult to master. there are soo many weird things going on, so many edge cases to remember, and all the pitfalls that are there to help the beginner but require a professional to pay close attention. i like something strict, maybe with type safety and a compiler that yells at you if you’re forgetting something or trying to do something stupid. not silently convert it. )

        Other than that: Whatever floats your boat… I don’t think it’s wrong to use something like php. i have used it and still use it from time to time. heck, i’ve even used lua where people start counting with ‘1’. sometimes it is the correct tool. sometimes it’s more important to get a job done, than having it done in a certain way. and of course people like to work with something that they’re familiar with. you’re probably better off and faster this way.