Команда exit в строке приглашения shell — стандартный способ завершить сеанс ADB и вернуться в обычную командную строку компьютера. Если приглашение вида device:/ $ сменилось на системное (например, C:\Users\...>), значит, выход выполнен корректно и связь с оболочкой устройства закрыта.
Застрять внутри ADB shell легко: приглашение терминала меняется, привычные команды Windows или Linux перестают работать, и кажется, что консоль «зависла». На самом деле вы просто находитесь внутри оболочки Android-устройства, и выйти оттуда можно несколькими способами — от штатной команды до принудительного разрыва соединения. Ниже разберём каждый вариант и типичные проблемы.
Базовый способ: команда exit
Введите exit и нажмите Enter — это штатная команда завершения сеанса оболочки, которая работает в любой Unix-подобной среде, включая оболочку Android.
exit
После выполнения вы вернётесь в командную строку компьютера. Если до входа в shell вы работали с несколькими уровнями (например, сначала выполнили adb shell, затем su для root-доступа), то одна команда exit закроет только текущий уровень — сеанс su. Потребуется ввести её повторно, чтобы полностью выйти из ADB shell.
Проверить, где вы находитесь, просто: посмотрите на приглашение. Знак $ означает обычного пользователя внутри устройства, # — root-сеанс, а привычный путь вроде C:\> или user@pc:~$ — командную строку компьютера.
Быстрый выход через Ctrl+D
Комбинация клавиш Ctrl+D отправляет символ конца ввода (EOF), что эквивалентно команде exit. Это удобно, когда не хочется набирать текст, и работает в терминалах Windows, Linux и macOS одинаково.
Учтите один нюанс: Ctrl+D срабатывает только на пустой строке ввода. Если в строке уже есть набранные символы, сначала очистите её клавишей Backspace или сочетанием Ctrl+C, а затем нажмите Ctrl+D.
Что делать, если shell «завис» и не реагирует
Иногда оболочка перестаёт отвечать: команда exit вводится, но ничего не происходит. Типичные причины — запущенный внутри shell длительный процесс, обрыв USB-соединения или зависание самого демона adbd на устройстве.
- ⌨️ Нажмите
Ctrl+C— это прервёт выполняющийся процесс и вернёт управление, после чего введитеexit. - 🔌 Отключите и заново подключите USB-кабель — сеанс shell разорвётся автоматически.
- 🔄 Выполните в новом окне терминала
adb kill-server, затемadb start-server— это перезапустит ADB на компьютере. - 📱 Перезагрузите устройство, если предыдущие шаги не помогли.
⚠️ Внимание: команда adb kill-server разорвёт все активные ADB-подключения, а не только зависший сеанс. Если параллельно идёт прошивка или передача файлов на другое устройство, дождитесь её окончания.
Проверка состояния подключения после выхода
После выхода из shell полезно убедиться, что устройство по-прежнему видно компьютеру — особенно если сеанс завершался аварийно. Для этого служит команда:
adb devices
В ответ вы получите список подключённых устройств и их состояние. Статус device означает нормальное подключение, unauthorized — что на смартфоне нужно подтвердить запрос на отладку, а offline — проблему со связью, которую обычно решает перезапуск ADB-сервера.
| Состояние в adb devices | Что означает | Действие |
|---|---|---|
| device | Подключение активно | Ничего, можно работать |
| unauthorized | Нет подтверждения отладки | Разрешить RSA-ключ на экране устройства |
| offline | Связь потеряна | Перезапустить ADB-сервер, переподключить кабель |
| устройство отсутствует | ADB не видит аппарат | Проверить кабель, драйверы, режим отладки |
Полное завершение работы с ADB
Выход из shell не останавливает фоновый процесс ADB-сервера на компьютере — он продолжает работать и держать порт. Если работа с устройством закончена, сервер можно остановить командой:
adb kill-server
Дополнительно стоит отключить само устройство: извлеките USB-кабель или, при подключении по Wi-Fi, выполните adb disconnect. На смартфоне при желании можно выключить отладку по USB в разделе «Для разработчиков» — это закроет потенциальный вектор доступа к аппарату.
☑️ Завершение работы с ADB — чек-лист
⚠️ Внимание: простое закрытие окна терминала крестиком не всегда корректно завершает сеанс — на устройстве может остаться «висячий» процесс shell. Перед закрытием окна введите exit.
Особенности при работе по Wi-Fi и с несколькими устройствами
При беспроводном подключении (adb connect IP:порт) выход из shell командой exit не разрывает само сетевое соединение — устройство остаётся привязанным. Чтобы полностью отключиться, используйте adb disconnect с адресом устройства или без аргументов для разрыва всех сетевых подключений.
Если к компьютеру подключено несколько аппаратов, помните: команды применяются к тому устройству, в shell которого вы вошли. Выйдя из него, вы не затрагиваете остальные сеансы. А вход в shell конкретного устройства выполняется с флагом adb -s серийный_номер shell — серийник берётся из вывода adb devices.
Почему после exit иногда снова появляется приглашение shell?
Это значит, что вы находились во вложенном сеансе — например, сначала выполнили adb shell, затем su, а потом запустили ещё одну оболочку внутри скрипта. Каждая команда exit закрывает ровно один уровень. Вводите её, пока приглашение не сменится на системное приглашение вашего компьютера.
Частые вопросы
Чем отличается exit от Ctrl+D?
Функционально — ничем: оба способа завершают текущий сеанс оболочки. Ctrl+D отправляет символ конца ввода и работает только на пустой строке, а exit можно ввести в любой момент.
Можно ли просто закрыть окно терминала?
Технически да, соединение разорвётся. Но корректнее сначала ввести exit, чтобы не оставлять незавершённые процессы на устройстве.
Что делать, если exit не работает и Ctrl+C не помогает?
Откройте второе окно терминала и выполните adb kill-server — это принудительно разорвёт все сеансы. Затем запустите сервер заново командой adb start-server.
Нужно ли выходить из shell перед отключением кабеля?
Желательно. Хотя отключение кабеля автоматически разорвёт сеанс, штатный выход через exit исключает обрыв выполняющихся на устройстве операций.
Как выйти из adb shell, запущенного внутри скрипта?
Добавьте команду exit в конец последовательности команд скрипта либо используйте формат adb shell "команда" — тогда оболочка завершится автоматически после выполнения.