Команда bash script.sh в Termux выдаёт ошибку Permission denied или bad interpreter чаще всего по двум причинам: у файла нет права на исполнение либо скрипт сохранён с Windows-переносами строк (CRLF), которые Linux-оболочка не понимает. Проверка занимает пару команд: ls -l покажет права файла, а file script.sh — формат окончаний строк.
Termux — это эмулятор терминала для Android с полноценным пакетным менеджером, и скрипты здесь работают почти так же, как на обычном Linux-дистрибутиве. Разница в деталях: своя структура каталогов (/data/data/com.termux/files/usr), отсутствие root по умолчанию и ограничения Android на доступ к файловой системе. В этой статье разберём, как создавать, запускать и отлаживать скрипты, какие инструменты стоит установить и какие ошибки встречаются чаще всего.
Подготовка Termux к работе со скриптами
Перед запуском первого скрипта обновите пакеты — устаревшие репозитории нередко становятся причиной ошибок установки. Для этого выполните:
pkg update && pkg upgrade
Далее установите базовый набор инструментов: текстовый редактор, интерпретаторы и утилиты. Без них большинство сценариев автоматизации не запустится.
- 📝 nano или vim — редактор для написания скриптов прямо на телефоне
- 🐍 python — для скриптов на Python, одном из самых популярных языков в Termux
- 🌐 curl и wget — загрузка файлов и работа с сетью
- 📦 git — клонирование репозиториев с готовыми скриптами
- 🗂️ termux-setup-storage — команда, дающая доступ к общему хранилище телефона
⚠️ Внимание: устанавливайте Termux только из F-Droid или с официальной страницы проекта на GitHub. Сборка из Google Play давно не обновлялась, и её репозитории работают некорректно — это подтверждённая проблема, из-за которой ломается установка пакетов.
Создание первого bash-скрипта
Откройте редактор командой nano myscript.sh и начните файл со строки shebang, которая указывает интерпретатор:
#!/data/data/com.termux/files/usr/bin/bash
echo "Скрипт запущен"
date
Обратите внимание: путь к bash в Termux отличается от привычного #!/bin/bash из десктопного Linux. Если скопировать скрипт из интернета с обычным shebang, он может не запуститься напрямую — обходной путь описан в разделе про ошибки.
После сохранения дайте файлу право на исполнение и запустите его:
chmod +x myscript.sh
./myscript.sh
Альтернатива — запуск через интерпретатор без смены прав: bash myscript.sh. Этот способ удобен для быстрой проверки чужих скриптов.
Python-скрипты в Termux
После установки пакета python скрипты запускаются командой python script.py. Для внешних библиотек используется pip install имя_пакета, однако часть библиотек с нативными модулями (например, требующих компиляции) может не собраться — в таком случае ищите готовый пакет в репозитории Termux через pkg search.
Что реально автоматизировать Python-скриптами на телефоне:
- 🤖 Парсинг сайтов и проверка доступности страниц по расписанию
- 📁 Сортировка файлов в загрузках по расширениям и датам
- 🔔 Отправка уведомлений через API мессенджеров
- 📊 Обработка CSV и текстовых логов прямо на устройстве
Автозапуск скриптов и планировщик задач
Для запуска команд при старте Termux добавьте их в файл ~/.bashrc — он выполняется при каждом открытии сессии. Для периодических задач в репозитории есть cronie (реализация cron), а для запуска скриптов в фоне существует отдельное дополнение Termux:Boot, которое выполняет скрипты из каталога ~/.termux/boot после включения устройства.
Важный нюанс: Android агрессивно завершает фоновые процессы для экономии заряда. Если скрипт должен работать постоянно, отключите оптимизацию батареи для Termux в настройках системы и используйте команду termux-wake-lock, чтобы устройство не засыпало во время выполнения.
☑️ Чек-лист настройки автозапуска скрипта
Типичные ошибки и их решение
Разберём проблемы, с которыми сталкиваются чаще всего. Точное поведение зависит от версии Termux и Android, поэтому сверяйтесь с выводом конкретной ошибки.
| Ошибка | Вероятная причина | Решение |
|---|---|---|
| Permission denied | Нет права на исполнение | chmod +x file.sh |
| bad interpreter | Неверный shebang или CRLF-строки | Запуск через bash file.sh, конвертация через dos2unix |
| command not found | Пакет не установлен | pkg install имя_пакета |
| repository is under maintenance | Устаревшая сборка Termux | Переустановка из F-Droid |
| Процесс убит в фоне | Оптимизация батареи Android | Исключить Termux из оптимизации, termux-wake-lock |
⚠️ Внимание: не запускайте скрипты из незнакомых источников, не прочитав их содержимое. Команда вида curl -s URL | bash выполняет код напрямую — вредоносный скрипт может удалить данные из доступного Termux хранилища или отправить ваши файлы на чужой сервер. Сначала скачайте файл и откройте его в редакторе.
Почему скрипт с Linux не работает в Termux
Главные причины — другой путь к интерпретатору в shebang, отсутствие каталогов /bin и /usr/bin в привычном виде, отсутствие root-прав и systemd. Многие скрипты можно адаптировать, заменив пути и убрав команды, требующие системных привилегий. Утилита termux-fix-shebang автоматически исправляет shebang-строки в указанном файле.
Полезные возможности API Termux
Пакет termux-api вместе с приложением Termux:API открывает скриптам доступ к функциям телефона: отправка SMS, получение уровня заряда батареи, вибрация, уведомления, доступ к буферу обмена и датчикам. Например, команда termux-notification -t "Готово" -c "Скрипт завершён" покажет системное уведомление.
Набор доступных команд зависит от версии приложения и выданных разрешений — полный список смотрите в официальной документации проекта. Перед использованием в скрипте проверьте команду вручную: если разрешение не выдано, Android молча заблокирует вызов.
Безопасность и резервные копии
Скрипты, SSH-ключи и настройки Termux хранятся во внутреннем каталоге приложения и удаляются вместе с ним. Для резервного копирования домашнего каталога используйте архивацию через tar с сохранением в общее хранилище:
tar -czf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files home
Делайте копию перед экспериментами с новыми скриптами и перед обновлением пакетов. Восстановление из архива займёт пару минут, тогда как повторная настройка окружения с нуля — значительно дольше.
Часто задаваемые вопросы
Нужен ли root для запуска скриптов в Termux?
Нет, большинство скриптов работает без root. Права суперпользователя нужны только для операций с системными разделами и файлами других приложений. Если root на устройстве есть, в Termux можно установить пакет tsu или использовать su.
Как запустить скрипт по расписанию без открытия Termux?
Установите пакет cronie и настройте задание через crontab -e. Для надёжной работы отключите оптимизацию батареи для Termux, иначе Android может завершить фоновый процесс планировщика.
Почему скрипт, скачанный с GitHub, не запускается?
Чаще всего причина в shebang-строке #!/bin/bash, которой нет в Termux, либо в отсутствии права на исполнение. Попробуйте запуск через bash script.sh или исправьте shebang утилитой termux-fix-shebang.
Можно ли запускать скрипты Termux с рабочего стола?
Да, дополнение Termux:Widget позволяет выводить скрипты из каталога ~/.shortcuts в виде виджета или ярлыков на домашнем экране. Дополнение устанавливается отдельно из того же источника, что и сам Termux.
Куда Termux сохраняет файлы и как открыть их в других приложениях?
Рабочие файлы находятся в ~ (внутренний каталог приложения), недоступном другим программам. После выполнения termux-setup-storage появится каталог ~/storage/shared — это общее хранилище телефона, файлы оттуда видны файловым менеджерам и галерее.