{
  "id": 8300420,
  "title": "bashy: a pure-Go Bash 5.3 that runs on Windows and rebuilds itself from the downloaded binary",
  "url": "https://urgent.news/2026/09/18/bashy-a-pure-go-bash-5-3-that-runs-on-windows-and-rebuilds-itself",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-18T20:25:51.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/qiangli/bashy-a-pure-go-bash-53-that-runs-on-windows-and-rebuilds-itself-from-the-downloaded-binary-2h9d"
  },
  "original_language": "en",
  "account": "Bashy is a pure-Go implementation of Bash 5.3 that functions on both Windows and other operating systems. It is built entirely without CGo, and the resulting binary is static. The project leverages mvdan/sh as its foundation, and it aims to ensure that the same scripts will run on Windows as they do on Linux and macOS. Currently, the Windows version has not been tested to the same degree as the other platforms, and this discrepancy is acknowledged in the README.\n\nTo install Bashy, users can download a tarball for Linux/macOS or a zip file for Windows from the GitHub releases page: https://github.com/qiangli/bashy/releases/latest. A small tour repository is also available, showcasing 27 scripts and their expected output, which users can compare on their own machines: https://github.com/qiangli/bashsharp-tour.\n\nOne of the most appealing aspects of Bashy is that it requires no additional setup on Windows. After downloading the appropriate package, users can simply run bashy to fetch a pinned MinGit, provision their own Go toolchain, and trigger the binary to rebuild itself. This process is illustrated in the following command:\n\ncurl.exe -fsSLO https://github.com/qiangli/bashy/releases/latest/download/bashy-windows-amd64.zip\ntar.exe -xf bashy-windows-amd64.zip . \\bashy\ncd bashy ; .. \\bashy scripts/bootstrap-siblings.sh ; .. \\bashy dag build bin\\bashy.exe --version\n\nOne potential limitation of Bashy lies in its handling of certain shell features, particularly those involving set -o options, traps, and coproc statements. These are the areas where the majority of bugs have been identified. Any issues related to these features can be reported through the project's issue tracker: https://github.com/qiangli/bashy/issues.\n\nNot all features are supported in the default version of Bashy. An opt-in superset dialect is available through a command-line flag. When this flag is not used, Bashy behaves like a plain Bash shell. This post focuses solely on the standard Bash functionality provided by Bashy. The project is licensed under the BSD-3 license, and it is built upon the mvdan/sh library, a work by Daniel Martí, which is credited and forked within the implementation.",
  "summary": "I've been building a Bash 5.3 in pure Go — no CGo, one static binary — on top of mvdan/sh , mostly so the same scripts run on Windows. It passes all 86 runnable fixtures of GNU Bash's own test suite on Linux and macOS. (The Windows run is not yet measured to the same standard — an honest gap; the README lists what is still known-different.) Install A tarball on Linux/macOS, a zip on Windows:…",
  "key_points": [
    "Bashy is pure-Go implementation of Bash 5.3",
    "Runs on Windows and other OS without CGo",
    "Fetches MinGit and rebuilds itself on Windows"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}