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.
Morningstar оценил SpaceX в $780 млрд — вдвое ниже цели IPO на $1,75 трлн
Morningstar начал покрытие SpaceX с справедливой оценкой $780 млрд — почти вдвое меньше, чем компания хочет на IPO. При этом аналитики признают: после размещения акция всё равно, скорее всего, устоит.