Windows 原生 Shell

Bash,原生跑在 Windows 上。

为了跑一个 grep 而启动一台 Linux 虚拟机,等于买下一整个牧场只为喝一杯牛奶。niubash 只要一个 niu.exe。

Windows 10 / 11x64 与 ARM64免管理员安装

或下载便携版 .zip:x64 ·ARM64

86/86
GNU Bash 官方测试
27
套主题
40+
官方插件
176
个随包 Unix 命令
1
个可执行文件

一行安装

在 PowerShell 中执行

一行安装
PS>irm https://dl.caomengxuan666.com/install.ps1 | iex

脚本会自己判断架构,接好 PATH,再顺手建一个 Windows Terminal 配置文件。

不需要管理员权限,irm | iex 也不受执行策略影响。只有把脚本下载下来运行才会被拦,那时用:powershell -ExecutionPolicy Bypass -File .\install.ps1

为什么不是 WSL

每个 Windows shell 都在让你放弃点什么。CMD 停在 1987 年。PowerShell 不是 Bash,你的 for 循环和引号直觉一到那儿就死。WSL 是你要为了打印一个目录而收养的一整个发行版。Git Bash 模拟 Unix,然后靠猜来决定你的路径。

niubash 不做这道选择题。Windows 的进程、环境、路径和工具原样留着,Bash 和 Unix 命令直接叠上去。

它到底给你什么

ls 和 grep 是真进程,不是 shell 内部的脚本垫片。

rubash

真 Bash 语义

rubash 引擎跑通 GNU Bash 官方测试 86/86。兼容性不是嘴上说的,试是上游替我们考的。

paths

原生路径契约

C:\... 和 C:/... 直接能用,/c/... 和 /mnt/c/... 也认,输出一律原生。不猜。

winuxcmd

Unix 命令是真二进制

ls、cat、grep、find 都来自 winuxcmd,是通过 PATH 注入的真二进制,不是脚本垫片。不用另外装东西。

native

直接用你的 Windows 程序

git.exe、node.exe、python.exe、cargo.exe 原样调用。你的 PATH 就是你的 PATH。

prompt

27 套主题,会咬人的 git 提示

暂存、修改、未跟踪、领先、落后、stash、冲突,一眼看穿仓库状态。语法高亮和自动建议也在。

plugins

40+ 官方插件,带权限模型

git、docker、kubectl、npm、zoxide、direnv、fzf、thefuck。宿主访问写在 manifest 里,看得见。

completion

补全不用你操心

shell 定义、bash 补全自动导入、cmd -h 描述嗅探,加三级缓存。

modes

三种执行模式

交互 REPL 是一种,niu -c 是另一种:不加载 rc,不加载插件,行为只由命令本身决定。

不是 WSL。不是 Git Bash。不是 Cygwin。

niubash 不给你造一个隔离的 Linux 世界,也不靠路径翻译去猜你的参数。

能力niubashWSLGit BashCygwinPowerShell
Bash 语法完整完整完整大部分没有
Windows 原生路径原生/mnt/c转换转换原生
直接调用 Windows 程序直接桥接有怪癖隔一层直接
无虚拟机、无兼容层
随包 Unix 命令没有
Agent 命令稳定性良好路径风险层级风险引号风险

一个 shell,三层核心。

rubash 负责 Bash 执行语义,winuxcmd 提供 Unix 命令,reedline 负责交互体验。三者合起来就是 niubash。

01

rubash

Bash parser、executor、builtins 和脚本语义,GNU Bash 官方测试 86/86。

02

winuxcmd

随包 coreutils:ls、cat、grep、find、test、printf 都是真二进制,通过 PATH 命令链接注入。

03

reedline

补全、历史、vi/emacs 模式、prompt 渲染、自动建议和语法高亮。

PowerShell 会吃掉参数。niu -c 不会。

每个 AI coding agent 都说 Bash,因为模型就是在 Bash 上训练的。可在 Windows 上,它们大多只能凑合用 PowerShell,那个出了名会吃掉参数的 shell。同样五个参数喂进去,PowerShell 直接抛解析错误,niu -c 一个字节不差,全部送达。

它不打 banner,stdout 和 stderr 干净,退出码原样传回。不加载 rc,不加载插件,行为只由命令本身决定。

niu -c
$ niu -c 'ls -la | grep .rs'-rw-r--r-- 1 user 4.2K Sep 5 09:12 main.rs-rw-r--r-- 1 user 2.1K Sep 5 09:12 lib.rs$ niu -c 'for f in *.md; do wc -l "$f"; done' 212 README.md 88 README-zh.md$ niu -c 'git log --oneline -3'dac9fab release: version 1.0.31696cb3 merge v1.0.3$ niu -c 'test -f C:/Users/me/a.txt && echo found'found$ echo $?0
niubash terminal session

终端里也能出画面。

脚本生成的图像,直接渲染在终端里。

终端里渲染的动画 GIF
终端里渲染的动画 GIF
与 Git Bash 的路径转换对比
与 Git Bash 的路径转换对比

常见问题

和 WSL 比呢?

WSL 给你一整个 Linux,niubash 只给你 Bash。为了一杯牛奶买下整个牧场,牛当然不错,就是物流有点糟。真需要 Linux 内核特性的话,比如 systemd、原生 Docker、某个特定内核模块,继续用 WSL 就好,两者不冲突。

需要管理员权限吗?

不需要。安装包会接好 PATH,再建一个 Windows Terminal 配置文件,普通用户权限就够。想要便携版就下 .zip,第一次启动时自激活 Unix 命令。

我从 winuxsh 迁过来,配置怎么办?

第一次启动时,旧的 ~/.winuxshrc 会被自动迁移一次到 ~/.niubashrc,NIU_ 前缀自动改写,原文件原样留着。整个过程不吭声,重复启动也不会再动。~/.winshrc 仍然作为兼容回退,只在 ~/.niubashrc 不存在时才读。

支持 ARM64 吗?

支持。v1.0.1 起 x64 和 ARM64 的安装包、便携版都发。

怎么更新?

niu --self-update 更新 shell,wpm update winuxcmd 更新命令层,插件包各更各的。三层分开演进,互不牵连。

Bash,原生跑在 Windows 上。

为了跑一个 grep 而启动一台 Linux 虚拟机,等于买下一整个牧场只为喝一杯牛奶。niubash 只要一个 niu.exe。