在 Windows 上用 Linux 命令,长期以来只有两条路:装 WL 开虚拟机,或者装 Git Bash/Cygwin 凑合用。前者开销大、文件互访麻烦,后者版本杂乱、兼容性参差不齐。
现在,第三条路来了。微软在 Build 2026 开发者大会上正式推出 Windows 版 Coreutils 工具集,将多款主流 Linux 命令行工具原生集成到 Windows 中。
项目背景:基于 uutils,Rust 重写 GNU 核心工具
这套工具并非从零开发,而是基于开源项目 uutils。uutils 用 Rust 语言重构了 GNU 核心工具集,天然具备跨平台特性。微软的意图很明确——让开发者在 Linux、macOS、原生 Windows 以及 WSL 之间切换时,无需改变命令行使用习惯。
微软已在 GitHub 上架相关软件包,整合了 uutils、传统核心工具集、文件查找工具集以及兼容 GNU 标准的 grep 程序,最终打包为单一可执行文件。
安装与运行原理
目前已收录的命令包括 cat、cp、find、grep、hostname、ls、mv、pwd、rm、sleep、tee、uptime 等常用工具。简单文件处理、文本类脚本无需修改即可在 Windows 上直接运行。
安装只需一条命令,打开 PowerShell 执行:
winget install Microsoft.Coreutils
单文件架构是这套工具的亮点。微软没有为每个命令单独制作可执行程序,而是统一开发了coreutils.exe,所有工具功能都集成在这一个文件内。安装时,程序会为每条支持的命令创建 NTFS 硬链接(如 ls.exe、cp.exe、cat.exe),这些链接全部指向 C:\Program Files\coreutils\下的主程序。执行任意命令时,系统加载 coreutils.exe,程序再根据调用名称启动对应功能。
这种设计既让微软只维护一个主程序,又保留了 Linux 风格的独立命令调用形式。
命令冲突与兼容性
Linux 命令和 Windows/PowerShell 内置命令重名是个老问题。微软为此发布了兼容性对照表,各工具能否正常生效取决于终端类型、PATH 优先级以及 PowerShell 别名配置。
主动放弃的命令:dir、more、paste、whoami 等因与 Windows 原生命令功能冲突,未纳入工具集。
因系统限制无法支持的命令:chmod、chown、chroot、nohup、tty、who 等依赖 POSIX 标准接口,Windows 本身不兼容相关特性;kill 和 timeout 因 Windows 不兼容 POSIX 信号机制同样暂未支持。微软表示未来可能追加信号相关功能。
此外,同一命令在 Linux 和 Windows 上的运行效果可能存在差异,主要体现在换行符格式、文件权限机制和 POSIX 接口兼容度方面。
能替代 WSL 吗?不能
Coreutils 解决的是"轻量命令行工具在 Windows 上直接可用"的问题,但离替代 WSL 还有不小的距离:
1. 缺失 POSIX 核心能力
chmod/chown/kill/nohup 等依赖 POSIX 权限和进程信号的命令被明确砍掉。Windows 没有 Unix 式用户权限和进程信号体系,这类功能短期内很难补齐。Coreutils 适合文件处理、文本筛选和简单脚本,不适合深度系统权限和进程管控场景。
2. 命令冲突仍在
dir/more/whoami 和 Windows 原生命令重名,为系统稳定直接放弃兼容。PATH 顺序、PowerShell 别名等因素也导致同一条命令在不同终端表现可能不同,复杂环境需要手动排错。
3. 底层差异无法消除
换行符、文件路径、权限逻辑、特殊字符处理——Windows 和 Linux 天生不同。复杂 Shell 脚本和依赖底层 POSIX 特性的程序依然大概率跑不通。
结论:运行 Linux 专属服务、编译环境、完整容器或依赖系统调用的软件,WSL 仍然是唯一选择。Coreutils 更像是 WSL 的轻量补充——日常文件操作不用再开虚拟机了,但深度开发环境还得多走一步。