Ошибка «ls не является внутренней или внешней командой, исполняемой программой или пакетным файлом» появляется в командной строке Windows потому, что утилита ls — это команда Unix-систем (Linux, macOS), а в стандартном cmd.exe и PowerShell она отсутствует. Windows просто не находит исполняемый файл с таким именем ни в текущей папке, ни в каталогах, прописанных в переменной PATH, и выдаёт это сообщение.
Чаще всего с этой ошибкой сталкиваются пользователи, которые перешли с Linux, проходят обучение по Unix-командам или выполняют инструкцию, написанную для другой операционной системы. Проблема решается несколькими способами: от использования встроенного аналога до установки полноценного Unix-окружения. Разберём все варианты по порядку.
Почему команда ls не работает в Windows
Команда ls выводит список файлов и папок в каталоге. В Windows эту функцию выполняет команда dir, а сама утилита ls.exe в систему не входит. Когда вы вводите ls в командной строке, интерпретатор ищет одноимённый файл с расширением .exe, .bat, .cmd и другими выполняемыми расширениями сначала в текущем каталоге, затем во всех путях переменной PATH.
Если поиск ничего не дал — появляется знакомое сообщение об ошибке. Это стандартное поведение для любой неизвестной команды, а не признак сбоя системы. Стоит отметить, что в PowerShell команда ls часто работает, потому что там она является псевдонимом (alias) для командлета Get-ChildItem. Поэтому одна и та же команда может давать ошибку в cmd, но нормально выполняться в PowerShell.
Быстрое решение: команда dir
Самый простой выход — использовать встроенный аналог. В командной строке Windows для просмотра содержимого каталога предназначена команда dir. Она доступна «из коробки» и не требует никакой настройки:
dir
dir C:\Projects
dir /a
Полезные ключи команды dir:
- 📁
dir /a— показать все файлы, включая скрытые и системные; - 📄
dir /b— вывести только имена файлов без служебной информации; - 🔍
dir /s— показать содержимое каталога и всех вложенных папок; - 📅
dir /o:d— отсортировать по дате изменения.
В PowerShell помимо dir и ls работает «родной» командлет Get-ChildItem с расширенными возможностями фильтрации. Если вы просто хотели посмотреть содержимое папки — на этом решение заканчивается.
Способ 1: Git Bash — самый популярный вариант
Если вам нужна именно команда ls и другие Unix-утилиты (grep, cat, touch, ssh), оптимальным решением будет установка Git for Windows. Вместе с ним ставится среда Git Bash — эмулятор терминала Linux, где работают привычные команды.
Порядок действий:
- Скачайте установщик Git for Windows с официального сайта проекта git-scm.com.
- Запустите установку, оставив параметры по умолчанию.
- После установки откройте Git Bash через меню «Пуск» или контекстное меню папки (пункт «Git Bash Here», если он был включён при установке).
- Введите
ls— команда должна отработать без ошибок.
Дополнительно Git for Windows кладёт Unix-утилиты в папку вида C:\Program Files\Git\usr\bin. Если добавить этот путь в переменную PATH, команда ls заработает и в обычном cmd. О настройке PATH — в следующем разделе.
Способ 2: добавление пути в переменную PATH
Если утилита ls.exe уже есть на компьютере (например, после установки Git), но cmd её не видит, нужно добавить папку с ней в системную переменную PATH. Общий порядок для Windows 10 и 11:
- Нажмите
Win + R, введитеsysdm.cplи нажмите Enter. - Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды».
- В разделе «Системные переменные» (или «Переменные среды пользователя») найдите
Pathи нажмите «Изменить». - Добавьте новую строку с путём к папке, где лежит
ls.exe, например:C:\Program Files\Git\usr\bin. - Сохраните изменения кнопкой «ОК» во всех окнах.
☑️ Проверка после настройки PATH
⚠️ Внимание: переменная PATH подхватывается только при запуске нового окна терминала. Уже открытые окна командной строки изменений не увидят — их нужно закрыть и открыть заново.
Проверить, какие пути сейчас прописаны в PATH, можно командой echo %PATH% в cmd или $env:Path в PowerShell. Убедитесь, что между записями стоит точка с запятой и путь указан без опечаток.
Способ 3: WSL — полноценный Linux внутри Windows
Для разработчиков, которым нужна не одна команда, а целое Linux-окружение, Microsoft предлагает WSL (Windows Subsystem for Linux). Это подсистема, позволяющая запускать настоящий дистрибутив Linux (Ubuntu, Debian и другие) прямо в Windows.
Установка выполняется одной командой в PowerShell, запущенном от имени администратора:
wsl --install
После перезагрузки компьютера и создания пользователя Linux вы получите терминал, где ls и все остальные Unix-команды работают в родном окружении. Файлы Windows доступны из WSL через точку монтирования /mnt/c и аналогичные для других дисков.
Кому подходит WSL, а кому достаточно Git Bash
WSL оправдан, если вы разрабатываете под Linux, используете Docker, скрипты на bash или инструменты, требующие настоящего ядра Linux. Если нужно лишь иногда просматривать файлы и выполнять простые Unix-команды — Git Bash легче, ставится быстрее и потребляет меньше ресурсов.
Сравнение способов решения
| Способ | Сложность | Что даёт | Кому подходит |
|---|---|---|---|
| Команда dir | Не требует установки | Аналог ls в cmd | Всем для разовой задачи |
| PowerShell (ls как алиас) | Не требует установки | ls работает сразу | Пользователям Windows 10/11 |
| Git Bash | Низкая | Набор Unix-утилит | Программистам, студентам |
| Настройка PATH | Средняя | ls в любом терминале | Тем, у кого утилита уже есть |
| WSL | Средняя | Полноценный Linux | Разработчикам под Linux |
Если ошибка появляется для другой команды
Сообщение «не является внутренней или внешней командой» универсально: оно возникает для любой программы, которую Windows не может найти. Если ошибка появилась для команды, которая раньше работала (например, python, node, git), диагностика будет такой:
- 🔎 Проверьте, установлена ли сама программа — поищите её папку в
C:\Program Files; - 🛠️ Проверьте, добавлен ли путь к ней в
PATHкомандойecho %PATH%; - 🔁 Переустановите программу, отметив при установке опцию «Add to PATH», если она предлагается;
- 🚪 Откройте новое окно терминала после любых изменений переменных среды.
⚠️ Внимание: не скачивайте отдельные файлы вроде ls.exe с непроверенных сайтов «для решения ошибки». Под видом утилиты может распространяться вредоносный код. Безопасные источники — официальные установщики Git for Windows, WSL или пакетные менеджеры.
Часто задаваемые вопросы
Почему в PowerShell команда ls работает, а в cmd — нет?
В PowerShell ls является псевдонимом командлета Get-ChildItem, поэтому выполняется без установки чего-либо. В классическом cmd.exe таких псевдонимов нет, и команда вызывает ошибку.
Можно ли сделать так, чтобы ls работала в cmd без установки программ?
Да, можно создать пакетный файл ls.bat с содержимым @dir %* и поместить его в папку, прописанную в PATH. После этого ввод ls будет фактически вызывать dir. Это простой обходной приём, хотя он не даёт настоящего синтаксиса Unix-утилиты.
Опасна ли эта ошибка для системы?
Нет. Сообщение означает лишь, что команда не найдена. Оно не свидетельствует о повреждении Windows, вирусах или сбоях — только об отсутствии нужного исполняемого файла в известных системе путях.
Чем ls в Git Bash отличается от dir?
Это разные реализации одной задачи. Утилита ls из Git Bash поддерживает Unix-флаги (например, ls -la для подробного списка с правами доступа), а dir использует синтаксис Windows с ключами через слэш. Для просмотра содержимого папки обе команды подходят одинаково.
Поможет ли переустановка Windows?
Нет, и она не нужна. Ошибка решается использованием аналога команды, установкой Git for Windows или WSL либо корректной настройкой переменной PATH — всё это занимает несколько минут.