Скрипты для Termux: руководство по созданию и запуску

Команда 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?
Автоматизация рутинных действий
Изучение Linux и программирования
Запуск готовых инструментов с GitHub
Работа с файлами и бэкапы

Автозапуск скриптов и планировщик задач

Для запуска команд при старте Termux добавьте их в файл ~/.bashrc — он выполняется при каждом открытии сессии. Для периодических задач в репозитории есть cronie (реализация cron), а для запуска скриптов в фоне существует отдельное дополнение Termux:Boot, которое выполняет скрипты из каталога ~/.termux/boot после включения устройства.

Важный нюанс: Android агрессивно завершает фоновые процессы для экономии заряда. Если скрипт должен работать постоянно, отключите оптимизацию батареи для Termux в настройках системы и используйте команду termux-wake-lock, чтобы устройство не засыпало во время выполнения.

☑️ Чек-лист настройки автозапуска скрипта

Выполнено: 0 / 5

Типичные ошибки и их решение

Разберём проблемы, с которыми сталкиваются чаще всего. Точное поведение зависит от версии 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 — это общее хранилище телефона, файлы оттуда видны файловым менеджерам и галерее.