iSH porta una riga di comando Linux funzionante su iPhone e iPad senza jailbreak. È gratuita, è sull’App Store e non è una sessione remota: shell, filesystem e pacchetti stanno tutti sul dispositivo.
Come funziona davvero
iSH non è una macchina virtuale né un port nativo. Esegue un ambiente Alpine Linux tramite emulazione x86 in modalità utente unita alla traduzione delle chiamate di sistema: veri binari Linux x86 vengono interpretati istruzione per istruzione e le chiamate di sistema che effettuano sono tradotte in qualcosa che iOS accetta.
È questo progetto architetturale a spiegare sia la compatibilità di iSH sia la sua lentezza. L’interprete usa threaded code — un array di puntatori a funzione anziché un semplice switch — e guadagna così circa 3-5 volte rispetto all’approccio ingenuo, ma il pedaggio dell’emulazione resta su ogni istruzione. Consideralo un posto dove far girare script e piccoli strumenti, non dove compilare un progetto grande.
Una conseguenza coglie molti di sorpresa: poiché l’emulatore è x86, i binari ARM copiati magari da un Raspberry Pi o da un Mac con chip M non funzioneranno. Tutto deve arrivare dai repository x86 di Alpine.
Installazione e i primi cinque minuti
Installa iSH Shell dall’App Store. Il download è piccolo — circa 6 MB — perché il filesystem radice di Alpine viene scaricato e scompattato al primo avvio. Esiste anche un canale beta su TestFlight per chi vuole build in anticipo rispetto al negozio.
La prima cosa sensata è aggiornare l’indice dei pacchetti:
apk update
Un equivoco diffuso è che iSH «supporti Bash, Zsh e Fish». Quello che arriva è BusyBox ash, la shell predefinita di Alpine. Bash, Zsh e Fish ci sono tutte, ma le installi tu:
apk add bash git python3 nano openssh
Gestione pacchetti: apk, non apt
Se le tue abitudini Linux vengono da Debian o Ubuntu, la memoria muscolare ti remerà contro. Qui apt-get non c’è. Alpine usa apk:
apk add <pacchetto> per installare, apk del <pacchetto> per rimuovere, apk search <termine> per cercare e apk upgrade per aggiornare tutto.
Alpine è costruita su musl libc anziché su glibc. Alla maggior parte del software da riga di comando non importa, ma qualche binario o qualche wheel Python che dà per scontata glibc si rifiuterà di funzionare. È un limite di Alpine, non di iSH.
Il git clone che si blocca — e la soluzione
Il problema più segnalato in assoluto: git clone si ferma su resolving deltas 0% e non prosegue. Non è un guasto di rete ma un problema di thread sotto emulazione. Costringi git a lavorare su un thread solo:
git config --global pack.threads "1"
Il clone andrà a buon fine, lentamente su repository grandi. Attenzione però: questo risolve il clone, non tutto ciò che viene dopo. Toolchain che avviano molti thread o si aspettano una glibc completa — le build Go sono l’esempio classico — possono fallire anche dopo un checkout riuscito.
I limiti da conoscere prima di farci affidamento
iOS sospende le app in background. Se esci da iSH durante un lavoro lungo, il sistema prima o poi la congela o ne recupera la memoria. Il wiki del progetto documenta un espediente che tiene viva l’app tramite la modalità di localizzazione in background, leggendo /dev/location verso /dev/null. Funziona, ma consuma batteria ed è un ripiego, non una funzione supportata.
Non c’è JIT. Apple non concede alle app dell’App Store il permesso che consentirebbe a iSH di compilare codice a runtime, il che pone un tetto alla velocità raggiungibile dall’emulatore.
Sei dentro la sandbox dell’app. iSH non può toccare il resto di iOS. Si integra con l’app File, quindi puoi far entrare e uscire dati; ma «accesso a livello di sistema su iOS» non è questo — quella formula circola in parecchi articoli ed è sbagliata.
iSH o a-Shell?
Sono le due scelte realistiche, ed è un confronto tra opposti.
a-Shell porta binari nativi compilati per iOS. È veloce e leggera sulla batteria, ma non è una distribuzione Linux: niente apk, niente apt, nessun gestore di pacchetti e nessuna intenzione di aggiungerne uno. Hai quello che il manutentore mette nel pacchetto.
iSH è un sistema Alpine vero, con migliaia di pacchetti installabili, e lo paga con il costo dell’emulazione.
Scegli a-Shell se la velocità conta più della scelta dei pacchetti. Scegli iSH se ti serve davvero una distribuzione Linux e convivi con la lentezza. E per chiudere una domanda ricorrente: Termux non è mai stato portato su iOS. Qualunque cosa sull’App Store si presenti come «Termux per iPhone» non è il progetto Android.
A che punto è il progetto nel 2026
Serve lucidità. La versione sull’App Store è la 1.3.2, di maggio 2023: da oltre tre anni non esce una pubblicazione sul negozio. La scheda mantiene 4,7 su 5 con circa 1.200 valutazioni e l’app gira da iOS 11 in poi.
Il repository racconta una storia più viva: oltre 20.000 stelle, più di 4.000 commit e circa 660 issue aperte. Lo sviluppo non si è fermato, ma il flusso di release finite verso l’App Store sì — e il numero di issue aperte è un segnale onesto delle asperità che incontrerai.
Vale quindi la pena installarla?
Sì, con le aspettative giuste. Come ambiente Unix da tasca — scrivere ed eseguire script shell, modificare file con vim o nano, un po’ di Python al volo, SSH verso un server vero, operazioni git, mettere mano a un file di testo alle due di notte perché il computer non è a portata — fa il suo lavoro, e su iOS nient’altro lo fa in modo altrettanto completo.
Come macchina di sviluppo ti farà innervosire. Compilare è lento, i lavori lunghi muoiono quando l’app passa in background e alcuni pacchetti semplicemente non collaborano. Il nostro giudizio precedente su questa pagina diceva che iSH «aveva bisogno di parecchio lavoro»; tre anni dopo resta vero — con la differenza che ora possiamo indicare con precisione dove sta l’attrito, invece di fermarci a un’impressione.