Dev tools · alternatives · 2026
24 alternatives to Bach.sh is a real unit testing framework for Bash
Unit testing framework for developing cross-platform Bash unit tests - bach-sh/bach
Bach.sh is a unit testing framework designed for Bash scripts. It enables developers to write and run tests for Bash code, helping ensure script quality and reliability. The framework is built specifically for Bash… Below are 24 products that do a similar job, ranked by how close each is in meaning and then by launch-day votes. Prices are shown for the 1 we have checked on their own sites, 1 of them free or with a free tier. Bach.sh is a real unit testing framework for Bash launched in 2020; newer entries below may have overtaken it.
- 1

Dead simple testing framework for Bash with coverage reporting - Checksum/critic.sh
2020 · github.com · its alternatives →
- 2
dif.sh▲373Markdown feature flags your coding agent installs for you
Aug 2026 · dif.sh · its alternatives →
- 3
Browse.sh▲508Give your agents muscle memory for automating the web
Jun 2026 · browse.sh · its alternatives →
- 4CS
The pattern of downloading and executing installation scripts without verifying them has bothered me for a while. I started messing around with a way to verify the checksum of scripts before I execute them. I've found it a really useful tool for installing things like Rust or Deno. It's written entirely as a shell script, and it's easy to read and understand what's happening. I hope it may be useful to someone else!
2022 · checksum.sh · its alternatives →
- 5AC
2018 · npmjs.com · its alternatives →
- 6

A purely bash web server, no socat, netcat, etc... - GitHub - dzove855/Bash-web-server: A purely bash web server, no socat, netcat, etc...
2022 · github.com · its alternatives →
- 7

Minimal distributed configuration management in bash - frameable/aviary.sh
2020 · github.com · its alternatives →
- 8BR
2017 · bash.rocks · its alternatives →
- 9

My simple Swiss Army knife for http/https troubleshooting and profiling. - trimstray/htrace.sh
2019 · github.com · its alternatives →
- 10
bashunit▲70testing, bash, bash-script, unittesting, testing-framework,
2023 · bashunit.com · its alternatives →
- 11

I originally was just messing with pi-autoresearch. Gave it a sample task to build the most portable coding agent. First cut was 6 KB of shell. Great for one-shots, unusable interactively. I was shocked it actually worked. Started building up -- adding features — but with a self-imposed rule: no new dependencies, and sub 500 LOC. This thing had to be truly portable. Just sh, curl, awk. System primitives only. Which means I did some genuinely disgusting things in awk, including JSON parsing and the OpenAI Responses tool loop with reasoning items carried across turns. It's now ~400 lines. In…
Apr 2026 · pu.dev · its alternatives →
- 12

An attempt at saner Bash defaults. Contribute to mrzool/bash-sensible development by creating an account on GitHub.
2016 · github.com · its alternatives →
- 13

- 14

Hi! I've been building a debugger on my nights and weekends because it's fun, and I personally need a better debugger for my work. GDB and LLDB pain me greatly; we can and will do better! As explained in the README, it's still very early-days and it's not ready for use yet, but check back often because it's improving all the time! Check out https://calabro.io/uscope for a more detailed explanation. Thanks for taking a look!
2025 · github.com · its alternatives →
- 15

Friendly and fast tool for sending HTTP requests. Contribute to ducaale/xh development by creating an account on GitHub.
2021 · github.com · its alternatives →
- 16

We've been building Crust (https://crustjs.com/), a TypeScript-first, Bun-native CLI framework with zero dependencies. It's been powering our core product internally for a while, and we're now open-sourcing it. The problem we kept running into: existing CLI frameworks in the JS ecosystem are either minimal arg parsers where you wire everything yourself, or heavyweight frameworks with large dependency trees and Node-era assumptions. We wanted something in between. What Crust does differently: - Full type inference from definitions — args and flags are inferred automatically. No…
Mar 2026 · github.com · its alternatives →
- 17

Hurl, run and test HTTP requests with plain text and curl. Hurl can run fast automated integration tests.
2021 · hurl.dev · its alternatives →
- 18

Sketching ReasonML/OCaml code with inline evaluation results
2018 · sketch.sh · its alternatives →
- 19

Hello HN, I introduce a property-based testing tool for Ruby. Ruby's ease of test-writing and rich ecosystem are widely acclaimed. However, property-based testing is not as widely used as in other languages such as Haskell or Elixir, and I think this is because there is no de facto testing tool. This gem currently not only has the basic functionality of stateless property-based testing but also has the following features: - Support verbose mode that allows you to see its shrinking procedure and algorithms. - Support several concurrency/parallel executions of each test. As of now,…
2024 · github.com · its alternatives →
- 20

I built a Rust-based CLI/terminal UI for inspecting Parquet files—data, metadata, and row-group-level structure—right from the terminal. If someone sent me a Parquet file, I used to open DuckDB or Polars just to see what was inside. Now I can do it with one command. Repo: https://github.com/kaushiksrini/parqeye
Nov 2025 · github.com · its alternatives →
- 21SS
2015 · maxcdn.github.io · its alternatives →
- 22

A sharp cut(1) clone. Contribute to sstadick/hck development by creating an account on GitHub.
2021 · github.com · its alternatives →
- 23
now.sh▲83Pipeable bash script that prints current time while waiting for an input from stdin - apankrat/now.sh
2013 · github.com · its alternatives →
- 24

µServer in Bash. Contribute to EddySchauHai/bashttp development by creating an account on GitHub.
2022 · github.com · its alternatives →
Also compare
Ranked by how close each launch is in meaning, then by votes. Prices were read from each product’s own site when checked and can change. Refine with your own description →