ls не является внутренней или внешней командой: причины и решения

Ошибка «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, где работают привычные команды.

Порядок действий:

  1. Скачайте установщик Git for Windows с официального сайта проекта git-scm.com.
  2. Запустите установку, оставив параметры по умолчанию.
  3. После установки откройте Git Bash через меню «Пуск» или контекстное меню папки (пункт «Git Bash Here», если он был включён при установке).
  4. Введите ls — команда должна отработать без ошибок.

Дополнительно Git for Windows кладёт Unix-утилиты в папку вида C:\Program Files\Git\usr\bin. Если добавить этот путь в переменную PATH, команда ls заработает и в обычном cmd. О настройке PATH — в следующем разделе.

📊 Как вы решили проблему с командой ls?
Использовал dir вместо ls
Установил Git Bash
Настроил WSL
Прописал путь в PATH вручную

Способ 2: добавление пути в переменную PATH

Если утилита ls.exe уже есть на компьютере (например, после установки Git), но cmd её не видит, нужно добавить папку с ней в системную переменную PATH. Общий порядок для Windows 10 и 11:

  1. Нажмите Win + R, введите sysdm.cpl и нажмите Enter.
  2. Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды».
  3. В разделе «Системные переменные» (или «Переменные среды пользователя») найдите Path и нажмите «Изменить».
  4. Добавьте новую строку с путём к папке, где лежит ls.exe, например: C:\Program Files\Git\usr\bin.
  5. Сохраните изменения кнопкой «ОК» во всех окнах.

☑️ Проверка после настройки PATH

Выполнено: 0 / 4
⚠️ Внимание: переменная 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 — всё это занимает несколько минут.