Skip to content

Repository files navigation

Winuxsh

Bash, native on Windows. No WSL. No VM. No /mnt/c. No cmdlet dialect. Just the shell your fingers already know — and the one your AI agent actually speaks.

English · 中文

Winuxsh CI GPL-3.0 Stars

One native Windows binary. Bash syntax. Windows paths. Real Windows programs. Unix commands included. No emulation layer between your command and your tools — and nothing for your AI agent to trip over.

Winuxsh interactive session: git prompt, grep, sed in-place editing, awk pipelines, tree

That's it. That's the whole pitch.

The pitch

You don't need WSL. You need Winuxsh.

Every Windows shell asks you to give something up. CMD is frozen in 1987. PowerShell isn't Bash — your for loops and quoting instincts die on arrival. WSL is a whole Linux distro you adopt just to print a directory. Git Bash emulates Unix and guesses at your paths, and Windows-native tools refuse to speak its dialect.

Winuxsh gives it all back:

  • Bash, for realif, for, case, $(...), pipes, heredocs, functions, arrays. The engine is rubash, which passes GNU Bash's own test suite: 86/86.
  • Windows paths, nativeC:\... and C:/... work as-is, /c/... input is understood, and output is always native. Native tools get native paths, zero guessing.
  • Unix commands includedls, cat, grep, find, test, printf, ... via WinuxCmd. Nothing to install.
  • Real Windows programs, directgit.exe, node.exe, python.exe, cargo.exe. Your PATH is your PATH.
  • A prompt you'll enjoy — 27 themes (agnoster, spaceship, tokyonight, p10 family...), a git prompt that grows teeth, syntax highlighting, autosuggestions, vi/emacs modes.
  • Plugins with a permission model — 40+ packs (git, docker, kubectl, npm, zoxide, fzf, thefuck, ...); reviewed source packs and process adapters declare the host access they need.

AI-native

Every AI coding agent speaks Bash. On Windows, most are stuck with PowerShell — the shell that famously eats arguments:

# PowerShell 5.1                                # Winuxsh
> node -e "console.log(JSON.stringify(          ❯ node -e "console.log(JSON.stringify(
    process.argv.slice(1)))" "a b" "" "c\"d"      process.argv.slice(1)))" "a b" "" "c\"d"
    "e\f" "---"                                   "e\f" "---"

ParserError: TerminatorExpectedAtEndOfString   ["a b","","c\"d","e\\f","---"]

Five arguments in. PowerShell throws a parse error; Winuxsh delivers all five byte-for-byte. Even Codex is locked to PowerShell on Windows — users are literally voting to escape. Why Winuxsh has the full receipts.

This is what that feels like from the other side of the keyboard:

Animated story: a developer chats with codex, PowerShell eats the arguments, the user loses it, then winuxsh saves the day

winuxsh -c is a contract, not an afterthought: no banners, stable stdout/stderr, exact exit-code propagation. What the agent writes is what the process receives.

winuxsh -c 'test -f Cargo.toml && echo build' && echo "exit=$?"
winuxsh deploy.sh

Install

Grab winuxsh-v*-win-*-setup.exe from Releases and run it — no admin rights; it wires up your PATH and a Windows Terminal profile. Or take the portable zip (first launch self-activates the Unix commands). From source:

git clone https://github.com/unixwin/winuxsh.git && cd winuxsh
cargo build --release && target\release\winuxsh.exe

Keep it current: winuxsh --self-update.

Configuration

~/.winuxshrc is the interactive entry point. Put your theme, prompt, plugins, exports, aliases, and functions there:

WINUXSH_THEME=spaceship
WINUXSH_PLUGINS=(prompt-core git)
[ -f "$WINUXSH/oh-my-winuxsh.winux" ] && . "$WINUXSH/oh-my-winuxsh.winux"

Terminal toys

Winuxsh's terminal isn't just for commands — it prints pictures. The terminal-flags project turns any image or GIF into a standalone ANSI printer script:

winuxsh flags/taffy.sh         # photos, right in the terminal
winuxsh flags/qiu-dance.sh     # animated GIFs, frame timing preserved

Truecolor half-block pixels, no Python or Pillow needed at runtime:

An animated Qiubiaoqing sticker playing inside a Winuxsh terminal, printed from a generated shell script

Documentation

Full docs site: docs · Getting started · Why Winuxsh · Advanced usage · Architecture

Under the hood: rubash (Bash engine) · WinuxCmd (Unix commands) · reedline (line editor)

FAQ

  • Another Git Bash? No — Git Bash emulates Unix on top of Windows. Winuxsh is a native Windows process: native paths, direct Windows binary execution, Bash compatibility in the language engine, not a fake filesystem.
  • Still need WSL? Sure — for real Linux kernels, Linux Docker, Linux-only toolchains. For the other 95% of your day: you don't need WSL. You need Winuxsh.
  • Where's my config? ~/.winuxshrc — plain Bash. Structured plugin state lives in ~/.winshrc.toml.

If Winuxsh just saved you from booting a Linux VM to run grep, star the repo and tell a Windows developer. ★

License

GPL-3.0-or-later. See LICENSE.

About

AI-native Bash shell for Windows: bash syntax, native Windows paths, Unix commands, direct execution of real Windows binaries. No WSL, no emulation - for humans and AI agents.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages