iSH команды iOS: гид по терминалу Linux на iPhone

Команда apk add python3 в приложении iSH завершается ошибкой «permission denied» или «not found» чаще всего из-за того, что терминал запущен не от имени root или не обновлён индекс репозиториев — это первое, что стоит проверить при сбоях пакетного менеджера. iSH представляет собой эмулятор x86, который запускает полноценный Linux-дистрибутив на базе Alpine Linux прямо на iPhone и iPad, и почти все проблемы новичков связаны именно с особенностями этой связки, а не с самими командами.

В этом материале собраны основные команды iSH на iOS: от базовой навигации по файловой системе до установки пакетов, работы с сетью и доступа к файлам iOS. Синтаксис соответствует стандартному Alpine Linux, поэтому большинство инструкций применимо и к другим системам на его основе.

Что такое iSH и какие ограничения у терминала

iSH — это приложение из App Store, которое эмулирует процессорную архитектуру x86 в пользовательском пространстве и запускает минимальный образ Alpine Linux. Это не виртуальная машина и не джейлбрейк: приложение работает в песочнице iOS, поэтому часть системных вызовов недоступна или работает медленнее, чем на нативном Linux.

Из-за эмуляции x86 на ARM-процессоре устройства производительность заметно ниже, чем у нативных приложений. Тяжёлые компиляции и ресурсоёмкие программы выполняются долго, а некоторые пакеты, требующие специфических расширений процессора, могут не запускаться вовсе. Это нормальное поведение, а не неисправность.

Также стоит учитывать, что iOS агрессивно выгружает фоновые процессы. Если свернуть приложение надолго, сессия терминала может быть завершена системой, и несохранённые данные пропадут.

Первые команды после установки

Сразу после запуска приложения вы попадаете в оболочку ash от имени пользователя root — в Alpine это поведение по умолчанию для контейнерного окружения. Первым делом обновите индекс пакетов, иначе установка программ будет завершаться ошибками о ненайденных пакетах:

apk update

apk upgrade

Далее полезно поставить базовый набор утилит, которых нет в минимальном образе:

apk add nano curl wget git python3

Проверить версию системы и окружения можно так:

  • 📌 cat /etc/alpine-release — версия Alpine Linux;
  • 📌 uname -a — информация о ядре и архитектуре (покажет x86-эмуляцию);
  • 📌 df -h — свободное место в файловой системе;
  • 📌 whoami — текущий пользователь.

Управление пакетами через apk

Пакетный менеджер apk (Alpine Package Keeper) — центральный инструмент iSH. Его синтаксис отличается от привычных apt или yum, поэтому команды стоит запомнить отдельно.

КомандаНазначение
apk updateОбновить индекс репозиториев
apk add имяУстановить пакет
apk del имяУдалить пакет
apk search словоНайти пакет по названию
apk info -vСписок установленных пакетов

Поиск пакетов поддерживает шаблоны: команда apk search py3-* покажет все пакеты, связанные с Python 3. Если нужного пакета нет в стандартных репозиториях, проверьте, не входит ли он в другой пакет под другим именем — в Alpine программы часто разбиты на мелкие компоненты.

⚠️ Внимание: не все пакеты из репозиториев Alpine работоспособны в iSH. Программы, требующие прямого доступа к ядру, systemd или специфических инструкций процессора, могут падать с ошибками. Перед установкой тяжёлого софта поищите отзывы именно про совместимость с iSH.
📊 Для чего вы в основном используете iSH?
Изучение Linux и командной строки
Python и скрипты
Git и работа с репозиториями
SSH-подключение к серверам

Навигация и работа с файлами

Файловые операции в iSH стандартны для любого Linux. Домашняя директория root — /root, а корень файловой системы — /. Вам понадобятся классические команды: ls -la для просмотра содержимого, cd для перехода между каталогами, cp, mv и rm для копирования, перемещения и удаления.

Создание и редактирование файлов удобнее всего вести через nano — он проще vi для новичков и устанавливается одной командой apk add nano. Просмотр содержимого файлов — cat файл или less файл для больших документов.

Для поиска по файловой системе используйте find / -name "имя" 2>/dev/null — перенаправление ошибок в /dev/null уберёт из вывода сообщения о недоступных каталогах, которых в песочнице iSH немало.

☑️ Базовая настройка iSH после установки

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

Доступ к файлам iOS из терминала

Одна из самых полезных возможностей iSH — монтирование папок iOS внутрь Linux-окружения. Это позволяет обмениваться файлами между терминалом и обычными приложениями через приложение «Файлы».

Для монтирования выполните команду mount -t ios . /mnt, после чего iSH откроет системный диалог выбора папки. Выбранная директория станет доступна по пути /mnt. Также файловая система iSH видна в приложении «Файлы» на iOS — туда можно копировать документы без терминала.

mkdir -p /mnt

mount -t ios . /mnt

ls /mnt

Размонтирование выполняется командой umount /mnt. Если каталог занят процессом, команда вернёт ошибку — сначала выйдите из каталога /mnt в другую директорию.

Почему mount иногда не срабатывает

Если диалог выбора папки не появляется, проверьте, что у iSH есть доступ к файлам в настройках iOS. Также помогает перезапуск приложения. Точное поведение зависит от версии iOS, поэтому при сбоях сверяйтесь с актуальной документацией проекта iSH.

Сетевые команды и SSH

Сетевые возможности iSH включают стандартные утилиты диагностики и подключения. Установите openssh и curl, если они ещё не добавлены:

  • 🌐 ping example.com — проверка доступности хоста;
  • 🌐 ssh user@host — подключение к удалённому серверу;
  • 🌐 curl -I адрес — проверка HTTP-заголовков;
  • 🌐 wget адрес — скачивание файла по ссылке.

SSH-клиент в iSH работает как обычный: ключи размещаются в ~/.ssh/, конфигурация — в ~/.ssh/config. Генерация ключевой пары выполняется командой ssh-keygen, как и на обычном Linux. Генерация ключей из-за эмуляции может занять заметно больше времени, чем на десктопе, — дождитесь завершения, не прерывая процесс.

⚠️ Внимание: не храните в iSH закрытые ключи от критически важных серверов без крайней необходимости. Хотя песочница iOS изолирует данные, резервные копии и экспорт файловой системы приложения могут вывести ключи за пределы терминала. Используйте отдельные ключи с ограниченными правами.

Запуск скриптов: Python, Bash и Git

После установки python3 скрипты запускаются привычно: python3 script.py. Менеджер пакетов pip ставится командой apk add py3-pip, после чего доступна установка библиотек через pip install. Учтите, что пакеты с компилируемыми нативными расширениями могут не собраться под эмулируемой архитектурой — в таком случае ищите чисто питоновские альтернативы.

Оболочка по умолчанию — ash, но полноценный bash устанавливается командой apk add bash. Сменить оболочку для текущей сессии можно просто запустив bash, а постоянную смену — через редактирование /etc/passwd или команду chsh, если она доступна в вашей версии окружения.

Git работает без ограничений: git clone, git commit, git push выполняются как обычно. Для авторизации на GitHub удобнее использовать токены доступа или SSH-ключи, так как интерактивная авторизация через браузер внутри терминала недоступна.

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

Ошибка «bad address» или зависание при выполнении программы обычно указывает на несовместимость софта с эмулятором, а не на неправильную команду. В такой ситуации помогает поиск альтернативной версии пакета или более лёгкого аналога.

Если терминал начал работать медленно, проверьте свободное место (df -h) и список запущенных процессов (ps aux). Зависшие процессы завершаются командой kill PID. При полном зависании приложения его можно перезапустить через переключатель приложений iOS — файловая система при этом сохраняется.

Полный сброс окружения доступен в настройках самого приложения iSH: там есть опция переустановки файловой системы. Перед сбросом скопируйте важные файлы через смонтированную папку iOS, иначе данные будут удалены безвозвратно.

⚠️ Внимание: сброс файловой системы iSH необратим — все установленные пакеты, скрипты и ключи внутри окружения удаляются. Предварительно выгрузите нужные данные через mount -t ios или приложение «Файлы».

Часто задаваемые вопросы

Можно ли использовать iSH без джейлбрейка?

Да, iSH распространяется через официальные каналы и работает в штатной песочнице iOS. Джейлбрейк не требуется, но из-за этого часть системных возможностей Linux недоступна.

Почему команды выполняются очень медленно?

iSH эмулирует архитектуру x86 на ARM-процессоре, что существенно снижает скорость. Это ожидаемое поведение: облегчить ситуацию можно, выбирая минимальные версии программ и избегая тяжёлых компиляций.

Как перенести файл из iPhone в iSH?

Используйте команду mount -t ios . /mnt и выберите нужную папку в системном диалоге, либо скопируйте файл через приложение «Файлы» — файловая система iSH отображается там как отдельное расположение.

Работает ли в iSH sudo?

По умолчанию сессия запускается от root, поэтому sudo не нужен. Если вы создали отдельного пользователя, пакет sudo можно установить через apk add sudo и настроить стандартным образом.

Можно ли запускать iSH в фоне?

iOS ограничивает фоновую работу приложений, поэтому длительные процессы могут быть прерваны системой. Для стабильной работы держите iSH на переднем плане; точное поведение зависит от версии iOS.