this post was submitted on 12 Jul 2023
34 points (75.8% liked)

Linux

48069 readers
1341 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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.
you are viewing a single comment's thread
view the rest of the comments
[–] Dirk@lemmy.ml 20 points 1 year ago (1 children)

What features does bash have that make it so suitable for shells?

You mean, except being automatically available in basically every Linux distribution without having to install any additional software?

[–] HeavyRust@lemm.ee 5 points 1 year ago (3 children)

They're asking why it became available everywhere.

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.

[–] fhein@lemmy.world 4 points 1 year ago

Because other languages available at that time lacked certain programming conveniences found in bash :) Despite its shortcomings, it's still a very convenient language for running other programs, working with files, and piping output from one program to another, or to a file. Bash was first released in 1989, and I don't know exactly when it passed the threshold for widespread adoption, but I can't think of anything that would've been a better alternative.

I think OP is also asking "why aren't people switching to something else now" which is a completely different question.

[–] fhein@lemmy.world 4 points 1 year ago

Because other languages available at that time lacked certain programming conveniences found in bash :) Despite its shortcomings, it's still a very convenient language for running other programs, working with files, and piping output from one program to another, or to a file. Bash was first released in 1989, and I don't know exactly when it passed the threshold for widespread adoption, but I can't think of anything that would've been a better alternative.

I think OP is also asking "why aren't people switching to something else now" which is a completely different question.

[–] Dirk@lemmy.ml -2 points 1 year ago (1 children)

Because it's automatically available in basically every Linux distribution without having to install any additional software.

[–] HeavyRust@lemm.ee 3 points 1 year ago (2 children)

So it became ubiquitous because it was ubiquitous.

Got it.

[–] fratermus@lemmy.sdf.org 1 points 1 year ago

So it became ubiquitous because it was ubiquitous.

IMO it became ubiquitous because it was a superset of the already-ubiquitous Bourne shell.

[–] Dirk@lemmy.ml 1 points 1 year ago

Because it was easily possible to become ubiquitous, because, well, what I said.

There really is no other reason. Bash scripting is slow and lacks a lot of features. But it simply works.