Microsoft выложил Coreutils для Windows — но половина команд конфликтует с CMD и PowerShell

Microsoft собрала uutils, findutils и grep в один бинарник для Windows, чтобы команды Linux работали нативно. Тред тут же нашёл дыру: какая версия ls запустится — зависит от шелла, порядка PATH и таблицы алиасов PowerShell.

Что Microsoft на самом деле выложил под именем coreutils

Репозиторий microsoft/coreutils набрал 208 очков и 222 комментария за то, что звучит как давняя мечта: UNIX-команды нативно на Windows. По README это «поддерживаемая Microsoft сборка uutils/coreutils, findutils и grep, упакованная как единый мульти-call бинарник для Windows». uutils — это переписанные на Rust аналоги GNU coreutils; Microsoft не пишет команды с нуля, а собирает существующий открытый проект под Windows. Цель прямая: чтобы «те же команды, флаги и пайплайны работали одинаково» на Windows, macOS и Linux.

Что выкинули и почему

Не все команды доехали. README делит выброшенные на три причины: завязаны на POSIX, ломали бы существующие Windows-скрипты или просто бесполезны на Windows.

  • POSIX-зависимые: chmod, chown, id, groups — модель прав другая.
  • Несовместимые по смыслу: dd, mkfifo, stty, tty.
  • Избыточные на Windows: uname, dircolors, sync.

Именно непоследовательность этого списка стала первой претензией в треде:

«Значит, dir не поставляется из-за конфликта со встроенными, echo и rmdir поставляются несмотря на конфликты, а sort сочли не имеющим конфликта? В чём логика?» — участник про нестыковки списка

Главная дыра: какая версия ls у тебя запустится

Самый болезненный пункт — обработка конфликтов имён. README честно пишет: для части команд (cat, cp, ls) — «поставляется, но конфликтует со встроенной», и какая сработает, зависит от шелла, порядка PATH и таблицы алиасов PowerShell. Команды вроде dir и whoami помечены «не поставляется» из-за неразрешимого конфликта.

Тред счёл это половинчатым решением:

«Microsoft принесла... но это не очень-то seamless, если половина команд не работает. Wine и другие слои совместимости показывают: нетривиальный софт не работает, если хоть один из множества слоёв использует что-то неподдерживаемое» — скептик о бесшовности

Инсайдер раскрыл внутреннюю логику разделения:

«Идея была в том, что конфликты с командами DOS — плохая затея, а переопределение встроенных PowerShell в интерактивных сессиях допустимо, пусть и не идеально. Мы открыли исходники DOS-sort и опубликовали порт DOS-команды find» — инженер Microsoft в треде

Корень проблемы оказался исторический: PowerShell годами подменял Linux-команды виндовыми эквивалентами, и теперь ls во многих системах ведёт себя как dir и принимает только его флаги — как объяснили в треде.

«Это чтобы ИИ-агенты лучше работали на Windows?»

Очевидная гипотеза треда — что всё это ради LLM-агентов, которые привыкли к Unix-командам:

«Интересно, не в том ли мотивация, чтобы ИИ-агенты лучше работали на Windows?» — участник о мотивации

Тот же инженер Microsoft опроверг это прямо:

«Намерение было простым — дать людям, пришедшим с macOS и Linux, больше привычных им CLI-инструментов. То есть агенты вообще не были фокусом. Но если это им поможет — приятный бонус» — инженер Microsoft о целях проекта

Кому это вообще нужно, если есть git-bash и WSL

Закономерный вопрос треда: зачем, если Unix-инструменты на Windows давно есть. Часть участников искренне обрадовалась тому, что теперь их будет сопровождать сама Microsoft:

«НАКОНЕЦ-ТО. Меня это правда радует. Линукс-порты (cygwin, msys2, git bash) все хороши, но чтобы их сопровождала MS — отличная новость» — пользователь, обрадованный мейнтейнером

Другие напоминали про уже существующие пути: winget install busybox-w32 или Unix-утилиты внутри Git for Windows. А кто-то сразу попросил большего:

«Для людей из MS, кто это читает: нативный zsh на Windows, пожалуйста. WSL2 — отлично, но нативный POSIX ещё лучше» — участник с запросом про zsh

Что в сухом остатке

Для разработчика на Windows прямо сейчас почти ничего не меняется: половина самых ходовых команд (ls, cat, cp) либо конфликтует с PowerShell, либо требует ручного управления PATH, а часть (dir, whoami) не поставляется вовсе. Реальная новость — не «теперь Unix работает на Windows», а то, что Microsoft официально берёт на сопровождение Rust-сборку uutils. Это, скорее, заявка на направление, чем готовый бесшовный слой — и инженер из команды, в кои-то веки честно отвечающий в треде на каждую претензию, это фактически и подтвердил.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 19 из 24 Читать дальше
📈Biz

Morningstar оценил SpaceX в $780 млрд — вдвое ниже цели IPO на $1,75 трлн

Morningstar начал покрытие SpaceX с справедливой оценкой $780 млрд — почти вдвое меньше, чем компания хочет на IPO. При этом аналитики признают: после размещения акция всё равно, скорее всего, устоит.

★ 198 · 💬 162 · reuters.com · 5 мин