Команда adb push или простой запуск adb devices завершается сообщением «no such file or directory» — и причина почти всегда в одном из трёх мест: система не находит сам исполняемый файл adb, ADB не находит файл, который вы пытаетесь отправить на устройство, либо путь на самом Android-устройстве указан неверно. Ошибка выглядит одинаково, но лечится по-разному, поэтому первым делом нужно понять, какой именно объект «не найден».
Эта инструкция подходит для Windows, macOS и Linux: синтаксис команд немного отличается, но логика диагностики одинаковая. Ниже разберём каждый сценарий отдельно — от проверки установки Android SDK Platform-Tools до нюансов путей с пробелами и кириллицей.
Шаг 1. Определите, что именно «не найдено»
Прежде чем что-то исправлять, внимательно прочитайте полный текст ошибки. Сообщение adb: no such file or directory возникает в разных ситуациях, и контекст подскажет направление поиска:
- 🔍 Терминал пишет
adb: command not foundили «не является внутренней или внешней командой» — система вообще не видит утилиту ADB. - 📁 Ошибка появляется при
adb push file.apk /sdcard/— не найден локальный файл на компьютере. - 📱 Ошибка при
adb pullили обращении к пути на устройстве — не существует путь на самом смартфоне. - ⚙️ Ошибка возникает при запуске скрипта — возможно, повреждена сама утилита или не хватает библиотек.
Запомните точную формулировку — дальше она понадобится, чтобы выбрать нужный раздел. Если сообщение сопровождается именем конкретного файла, проблема почти наверняка в пути к нему, а не в установке ADB.
Шаг 2. Проверьте, установлен ли ADB и виден ли он системе
Самый частый сценарий — вы вводите adb в командной строке, а операционная система не знает, где искать исполняемый файл. Это происходит, если Platform-Tools не добавлены в переменную окружения PATH или вы запускаете команду не из той папки.
Быстрая проверка: откройте терминал и выполните команду, которая покажет версию утилиты:
adb version
Если в ответ приходит «command not found» или аналог — ADB либо не установлен, либо его путь не прописан. В этом случае скачайте официальный пакет SDK Platform-Tools с сайта для разработчиков Android, распакуйте архив и либо работайте из этой папки, либо добавьте её в PATH.
Чтобы запустить ADB без настройки PATH, перейдите в каталог с утилитой и вызывайте её с явным указанием расположения:
cd C:\platform-tools
.\adb devices
В macOS и Linux вместо .\adb используется ./adb. Обратите внимание: префикс ./ обязателен, если текущая папка не входит в PATH — без него оболочка будет искать команду только в системных каталогах.
Шаг 3. Настройте переменную PATH правильно
Постоянно переходить в папку с ADB неудобно, поэтому путь к Platform-Tools обычно добавляют в системную переменную PATH. При этом ошибка «no such file or directory» нередко возникает из-за опечатки в этом пути — например, папку переименовали или переместили после настройки.
Порядок действий для Windows:
- 🗂️ Откройте «Система» → «Дополнительные параметры системы» → «Переменные среды».
- ✏️ Найдите переменную
Pathи добавьте полный путь к папке platform-tools, напримерC:\platform-tools. - 🔄 Закройте и заново откройте терминал — старые окна не подхватывают изменения.
- ✅ Проверьте результат командой
adb version.
В macOS и Linux путь прописывается в файле конфигурации оболочки (~/.zshrc или ~/.bashrc) строкой вида export PATH="$PATH:~/platform-tools", после чего нужно выполнить source ~/.zshrc или перезапустить терминал. Точное имя конфигурационного файла зависит от используемой оболочки — проверьте её командой echo $SHELL.
⚠️ Внимание: если в PATH указана папка, которой больше не существует, система просто пропустит её без предупреждений. Перед поиском других причин убедитесь, что путь в переменной реально ведёт к папке с файлом adb.exe (или adb на macOS/Linux).
Шаг 4. Проверьте пути к файлам при adb push и adb pull
Если сам ADB запускается, но ошибка появляется при передаче файлов, причина почти всегда в пути. Здесь есть две стороны: локальный файл на компьютере и целевой каталог на устройстве — и ошибиться можно в обоих.
Типичные ловушки с локальным путём:
- 📄 Файл переименован или лежит в другой папке — сверьте имя посимвольно, включая расширение.
- 🔤 Путь содержит пробелы или кириллицу — заключите его в кавычки:
adb push "C:\Мои файлы\app.apk" /sdcard/. - 🧭 Вы рассчитываете на относительный путь, но терминал открыт в другой папке — укажите абсолютный путь или перейдите в каталог с файлом.
- 💾 Файл на съёмном диске, который сейчас отключён, — буква диска недоступна.
С путём на устройстве ситуация тоньше. Каталог /sdcard/ существует практически на любом Android-устройстве, но пути вроде /data/local/tmp/ или системных разделов могут быть недоступны без соответствующих прав. Проверить существование каталога на устройстве можно командой adb shell ls /sdcard/ — если путь не существует, вы сразу увидите ту же ошибку «no such file or directory».
adb shell ls /sdcard/
adb push "C:\files\update.zip" /sdcard/Download/
☑️ Проверка перед adb push
Шаг 5. Убедитесь, что устройство подключено корректно
Иногда ошибка с файлом — следствие того, что ADB вообще не видит смартфон, и команда обращается «в никуда». Проверьте базовую связку:
adb devices
Если список пуст или устройство отображается со статусом unauthorized, передача файлов работать не будет. Для статуса unauthorized разблокируйте смартфон и подтвердите на его экране запрос «Разрешить отладку по USB?». Если устройства нет в списке совсем, проверьте, что отладка по USB включена в разделе «Для разработчиков» в настройках телефона, а кабель поддерживает передачу данных — часть зарядных кабелей её не имеет.
На Windows дополнительно может потребоваться драйвер USB от производителя устройства — без него смартфон определяется системой, но ADB его не видит. Драйверы распространяются через официальные сайты производителей, и их состав зависит от конкретной модели, поэтому сверяйтесь с документацией именно вашего аппарата.
⚠️ Внимание: после смены кабеля, порта USB или включения отладки перезапустите ADB-сервер командамиadb kill-serverиadb start-server— подвисший сервер нередко показывает устаревший список устройств.
Шаг 6. Специфика Linux и macOS: права и повреждённый бинарник
На Linux и macOS сообщение «no such file or directory» может появляться даже тогда, когда файл adb лежит прямо перед вами. Классическая причина — отсутствие права на исполнение. Оно сбрасывается, если архив распаковывался нештатными средствами или файл копировался между файловыми системами.
Исправляется одной командой:
chmod +x ./adb
Вторая возможная причина на Linux — отсутствие 32-битных библиотек совместимости на 64-битной системе: оболочка в этом случае выдаёт именно «no such file or directory», хотя проблема не в самом файле, а в его зависимостях. Современные сборки Platform-Tools обычно 64-битные, но если вы используете старую версию, проще скачать актуальный пакет, чем доустанавливать устаревшие библиотеки.
Также проверьте, что архив распаковался полностью: прерванная загрузка даёт «битый» исполняемый файл. Признак — размер файла заметно отличается от ожидаемого, либо ошибка сохраняется после всех проверок PATH и прав. Решение — удалить папку и распаковать архив заново.
Почему Linux пишет «no such file or directory» для существующего файла
Такое сообщение выдаётся не только когда файла нет, но и когда отсутствует интерпретатор или библиотека, указанная в заголовке исполняемого файла. Система пытается загрузить зависимость, не находит её и сообщает об ошибке так, будто не найден сам файл. Поэтому на Linux эта ошибка часто означает проблему с зависимостями, а не с путём.
Шаг 7. Ошибка внутри скриптов и при работе с adb shell
Когда «no such file or directory» всплывает внутри adb shell-команд или пакетных скриптов, виновником обычно оказывается несуществующий путь в самой системе Android либо отсутствующая утилита на устройстве. Например, команда adb shell /system/bin/some_tool выдаст эту ошибку, если some_tool в прошивке не предусмотрен.
Диагностируйте пошагово: сначала войдите в интерактивную оболочку командой adb shell, затем вручную выполните проблемную команду и проверьте каждый путь через ls. Так вы локализуете, какой именно элемент строки не существует. В скриптах Windows дополнительно проверяйте кодировку файла и окончания строк — скрипт, сохранённый с переносами строк в стиле Unix, иногда выполняется с ошибками, и наоборот.
Сводная таблица: симптом → причина → действие
| Симптом | Вероятная причина | Первое действие |
|---|---|---|
| «adb не является командой» / command not found | Platform-Tools не в PATH | Запустить из папки или добавить путь в PATH |
| Ошибка при adb push | Неверный локальный путь или пробелы без кавычек | Проверить имя файла, взять путь в кавычки |
| Ошибка при обращении к пути на устройстве | Каталог не существует или нет прав | Проверить через adb shell ls |
| Ошибка при видимом файле adb (Linux/macOS) | Нет права на исполнение | Выполнить chmod +x ./adb |
| Ошибка после распаковки архива | Повреждённый или неполный файл | Скачать и распаковать Platform-Tools заново |
Частые вопросы
ADB раньше работал, а теперь пишет «no such file or directory». Что изменилось?
Чаще всего папку platform-tools переместили, переименовали или удалили, а PATH указывает на старое место. Проверьте, существует ли путь из переменной среды, и обновите его. Также возможно, что антивирус удалил или поместил в карантин исполняемый файл — проверьте журнал защитника.
Файл точно лежит в папке, но adb push его не видит. Почему?
Скорее всего, терминал открыт в другом каталоге, а вы указали относительный путь. Выполните cd в папку с файлом или укажите полный абсолютный путь в кавычках. Ещё проверьте расширение: в Windows оно может быть скрыто, и реальное имя файла отличается от видимого.
Чем «no such file or directory» отличается от «device not found»?
Первая ошибка касается файлов и путей — на компьютере или на устройстве. Вторая означает, что ADB не видит подключённый смартфон: проблема в кабеле, драйвере, отладке по USB или состоянии ADB-сервера. Методы решения у них разные.
Нужен ли root для исправления этой ошибки?
Нет. Все описанные причины — пути, PATH, права на исполнение, подключение — решаются без root-доступа. Root может понадобиться только если вы целенаправленно работаете с защищёнными системными разделами устройства, но это отдельная задача со своими рисками.
В PATH всё прописано, но команда не находится в новом окне терминала?
Изменения переменных среды применяются только к вновь открытым окнам. Закройте все окна терминала и откройте заново. Если не помогло — перепроверьте, что путь добавлен именно в ту переменную (пользовательскую или системную), под которой вы работаете, и не содержит опечаток и лишних пробелов.