Ошибка /system/bin/sh: adb: inaccessible or not found появляется, когда команду adb вводят внутри shell-сессии самого Android-устройства — а там исполняемого файла adb-клиента просто нет. Оболочка sh на смартфоне ищет бинарник по путям из переменной PATH, не находит его и возвращает именно это сообщение. Это не сбой прошивки и не признак «окирпичивания»: система честно сообщает, что команда вызвана не в той среде.
Чаще всего ситуация выглядит так: пользователь подключается к устройству через adb shell или эмулятор терминала и пытается выполнить что-то вроде adb devices или adb reboot уже внутри консоли телефона. Клиент ADB существует на компьютере, а на Android-устройстве работает только его серверная часть — демон adbd, который принимает команды, но сам их не отправляет.
Ниже разберём, почему возникает эта ошибка, как отличить её от похожих проблем с PATH на компьютере и какие шаги помогут восстановить нормальную работу Android Debug Bridge.
Что означает ошибка и почему она возникает
Сообщение состоит из двух частей. /system/bin/sh — путь к командной оболочке на устройстве, а inaccessible or not found — стандартный ответ shell, когда исполняемый файл отсутствует в каталогах из PATH или недоступен для запуска. То есть оболочка поняла команду, но не смогла найти программу с таким именем.
Архитектура ADB предполагает три компонента: клиент (запускается на ПК), сервер (тоже на ПК, управляет соединениями) и демон adbd (работает на устройстве). Вводить команды вида adb ... нужно в терминале компьютера — в cmd, PowerShell или bash. Внутри adb shell вы уже находитесь в консоли Android, и там доступны только системные утилиты самой ОС: pm, am, settings, input и другие.
Вторая похожая ситуация — ошибка adb: command not found или «adb не является внутренней или внешней командой» уже на компьютере. Здесь причина другая: каталог с platform-tools не добавлен в переменную окружения PATH, либо терминал открыт не из той папки. Формулировки похожи, но лечатся по-разному, поэтому сначала важно понять, где именно вы вводите команду.
Где именно возникает ошибка: быстрая диагностика
Прежде чем что-то исправлять, определите контекст. Посмотрите на приглашение командной строки: если перед курсором видно что-то вроде device_name:/ $ или root@device:/ # — вы внутри shell устройства. Если строка выглядит как C:\Users\Имя> или user@pc:~$ — это терминал компьютера.
- 🔍 Ошибка внутри adb shell — вы уже на устройстве; выйдите командой
exitи вводите adb-команды в терминале ПК. - 💻 Ошибка в терминале ПК — проверьте, установлены ли platform-tools и прописан ли путь к ним в PATH.
- 📱 Ошибка в терминальном приложении на самом телефоне (например, в эмуляторах терминала) — там adb-клиента тоже нет, если вы не устанавливали его отдельно.
- 🔌 Устройство вообще не определяется — это уже проблема драйверов, кабеля или отладки по USB, а не отсутствия бинарника.
Такая проверка занимает меньше минуты, но избавляет от половины лишних действий. Дальше рассмотрим каждый сценарий подробнее.
Решение 1: правильный порядок работы с adb shell
Если ошибка возникает внутри сессии устройства, исправлять «нехватку файла» на телефоне не нужно — достаточно выстроить правильную последовательность команд. Сначала в терминале компьютера выполняется подключение, затем — нужные действия.
adb devices
adb shell
теперь вы внутри устройства — здесь работают pm, am, settings и т.д.
exit
снова терминал ПК — здесь доступны adb-команды
Обратите внимание: многие задачи вообще не требуют входа в shell. Например, перезагрузку, установку APK или снятие логов можно выполнить напрямую с ПК: adb reboot, adb install app.apk, adb logcat. Входить в интерактивную консоль устройства нужно только для команд, которые исполняются самой системой Android.
Решение 2: настройка ADB и PATH на компьютере
Когда ошибка звучит как «command not found» уже на ПК, необходимо убедиться, что пакет Android SDK Platform-Tools загружен с официального сайта для разработчиков Android и распакован в понятный каталог, например C:\platform-tools. Запускать adb.exe можно прямо из этой папки, открыв терминал в ней, но удобнее добавить путь в PATH.
На Windows это делается через «Система → Дополнительные параметры системы → Переменные среды»: в переменную Path добавляется полный путь к каталогу с platform-tools. После сохранения терминал нужно закрыть и открыть заново — старые окна не подхватывают обновлённые переменные. На Linux и macOS путь прописывается в файле конфигурации оболочки, например ~/.bashrc или ~/.zshrc, строкой вида export PATH="$PATH:/путь/к/platform-tools".
☑️ Проверка настройки ADB на ПК
Проверить результат просто: команда adb version должна вывести номер версии утилиты. Если вместо этого снова появляется «not found», перепроверьте путь — частая ошибка в том, что в PATH добавляют каталог верхнего уровня, а не тот, где лежит сам исполняемый файл.
⚠️ Внимание: скачивайте platform-tools только с официального сайта разработчиков Android. Сторонние «сборки ADB» с файлообменников могут содержать устаревшие или изменённые бинарники, что создаёт риски для безопасности устройства и ПК.
Решение 3: устройство не определяется — драйверы и отладка по USB
Иногда за ошибкой «not found» скрывается другая проблема: adb devices показывает пустой список или статус unauthorized. В этом случае вам нужно проверить цепочку подключения целиком, а не искать несуществующий файл.
- 🔐 Отладка по USB включается в разделе «Для разработчиков», который предварительно активируется многократным нажатием на «Номер сборки» в разделе «О телефоне». Точные названия пунктов зависят от оболочки производителя.
- 🖥️ Драйверы: на Windows может потребоваться установка USB-драйвера от производителя устройства; на Linux иногда нужны правила udev.
- 🔌 Кабель и порт: используйте кабель, поддерживающий передачу данных, — «зарядочные» кабели без data-линий встречаются чаще, чем кажется.
- ✅ Подтверждение на экране: при первом подключении устройство показывает запрос «Разрешить отладку по USB?» — без подтверждения соединение не установится.
Если устройство отображается со статусом unauthorized, отзовите разрешения в настройках разработчика («Отозвать доступ для отладки по USB», если такой пункт предусмотрен вашей прошивкой), перезапустите сервер командами adb kill-server и adb start-server, затем подключите устройство заново и подтвердите запрос на экране.
Сравнение похожих ошибок ADB
Чтобы не путать схожие сообщения, сведём их в одну таблицу. Это поможет быстро сориентироваться по тексту ошибки.
| Текст ошибки | Где возникает | Причина | Решение |
|---|---|---|---|
| /system/bin/sh: adb: inaccessible or not found | Внутри adb shell на устройстве | adb-команда введена в консоли Android, где нет клиента | Выйти через exit и вводить команды на ПК |
| adb: command not found | Терминал Linux/macOS | Platform-tools не в PATH | Добавить путь в PATH, перезапустить терминал |
| «adb» не является внутренней или внешней командой | cmd / PowerShell на Windows | PATH не настроен или терминал не перезапущен | Прописать путь, открыть новое окно терминала |
| error: device unauthorized | adb devices на ПК | Не подтверждён запрос на отладку | Подтвердить запрос на экране устройства |
| error: no devices/emulators found | adb на ПК | Устройство не подключено или не определилось | Проверить кабель, драйверы, отладку по USB |
Почему на Android-устройстве вообще нет adb-клиента
Клиент и сервер ADB — это компоненты для хост-машины (ПК). На устройстве работает только демон adbd, который принимает команды от компьютера и передаёт их системе. Производители не включают клиентскую часть в прошивку: она не нужна обычному пользователю и занимала бы место в системном разделе. Поэтому попытка вызвать adb внутри shell устройства закономерно завершается ошибкой not found.
Когда ошибка появляется на самом устройстве без ПК
Отдельный сценарий — запуск adb-команд в терминальном приложении прямо на смартфоне, например при попытке настроить беспроводную отладку без компьютера. Стандартной прошивкой клиент adb на устройстве не предусмотрен, поэтому оболочка снова отвечает not found.
На современных версиях Android, начиная с Android 11, предусмотрена беспроводная отладка, но первичное сопряжение всё равно обычно выполняется с компьютера или через специальные приложения, использующие pairing-код из настроек разработчика. Доступность и поведение этой функции зависят от версии ОС и оболочки производителя — сверяйтесь с документацией именно вашей модели.
⚠️ Внимание: не устанавливайте «adb-бинарники для телефона» из непроверенных источников и не копируйте исполняемые файлы в /system/bin — на современных устройствах системный раздел защищён, а попытки его модификации могут нарушить работу ОС и лишить гарантии.
FAQ: частые вопросы
Можно ли исправить ошибку, установив adb на сам смартфон?
В штатной прошивке клиент adb отсутствует, и добавлять его в системный раздел не нужно — это рискованно и не требуется для обычных задач. Правильное решение — вводить adb-команды с компьютера, а на устройстве использовать только системные команды Android внутри adb shell.
Команда adb devices выводит пустой список — это та же ошибка?
Нет. Пустой список означает, что компьютер не видит устройство: проверьте кабель с поддержкой передачи данных, включённую отладку по USB, драйверы и подтверждение запроса на экране смартфона. Ошибка «inaccessible or not found» к этому сценарию не относится.
Почему после добавления PATH команда всё равно не находится?
Наиболее частые причины: терминал не был перезапущен после изменения переменных среды, в PATH добавлен не тот каталог (нужен тот, где лежит сам исполняемый файл adb), либо в пути есть опечатка. Проверьте командой adb version в новом окне терминала.
Ошибка появляется в скрипте, который запускается на устройстве. Что делать?
Скрипт, исполняемый внутри Android (через adb shell или терминальное приложение), не может вызывать adb-команды. Перенесите эти вызовы в скрипт на стороне компьютера, а на устройстве оставьте только системные команды: pm, am, settings, input и подобные.
Опасна ли эта ошибка для устройства?
Нет, это информационное сообщение оболочки о том, что программа не найдена. Оно не влияет на систему, не удаляет данные и не требует сброса настроек — достаточно ввести команду в правильной среде.