Home
» MAC OS X
»
Come eseguire uno script di shell (.sh) su macOS
Come eseguire uno script di shell (.sh) su macOS
Per eseguire uno script di shell su macOS , apri il Terminale, vai alla cartella contenente il .shfile ed eseguilo con il suo interprete. Ad esempio, bash hello.shesegui uno script Bash senza modificarne i permessi. Se vuoi avviarlo come comando, rendilo eseguibile con chmod +x hello.sh, quindi esegui ./hello.sh. Questi metodi funzionano sulle versioni correnti di macOS.
Controlla lo script prima di eseguirlo
Uno script di shell è un file di testo semplice contenente comandi. Questi comandi vengono eseguiti con i permessi del tuo account utente, quindi uno script può modificare o eliminare file, installare software o inviare dati su una rete. Leggi attentamente uno script ricevuto prima di eseguirlo, soprattutto se richiede una password di amministratore o utilizza sudo. Esegui solo script provenienti da fonti attendibili; la modifica dei permessi di un file non ne rende sicuro il contenuto.
Apple descrive gli script di shell come file di testo contenenti comandi UNIX e spiega come una shebang selezioni la shell che esegue lo script. Consulta la guida di Apple agli script di shell su Terminal .
Eseguire uno script .sh con Bash
Questo è il modo più semplice per eseguire uno script Bash. Non è necessario aggiungere prima i permessi di esecuzione.
Crea o individua lo script. Uno script di shell può essere scritto in qualsiasi editor di testo semplice. Per una prova rapida, apri TextEdit, scegli Formato > Converti in testo semplice e inserisci queste due righe:
#!/bin/bash
echo "Hello from macOS"
Salva il file come hello.sh. Nella finestra di dialogo di salvataggio, verifica che il nome termini con .she che TextEdit non abbia aggiunto .txt. La prima riga è lo shebang: identifica Bash come interprete quando lo script viene avviato direttamente. La seconda riga stampa un breve messaggio.
Il file di esempio hello.sh contiene una shebang seguita da un comando che stampa del testo.
Apri il Terminale e vai alla cartella del file. Premi Comando-Spazio, digita Terminale e premi Invio. Se hai salvato il file in Download, inserisci:
cd ~/Downloads
Premi Invio dopo ogni comando. Puoi digitare lsper elencare i file e verificare che hello.shsiano presenti. Passa Downloadsalla cartella che hai effettivamente utilizzato. Se il nome di una cartella o di un file contiene spazi, inserisci il percorso tra virgolette, ad esempio cd "$HOME/My Scripts".
Utilizza il comando cd per aprire la cartella che contiene lo script, quindi verifica il suo nome con il comando ls.
Esegui lo script con Bash. Inserisci il nome dello script dopo bash:
bash hello.sh
Il terminale dovrebbe visualizzare Hello from macOS. Se lo script utilizza la sintassi Zsh invece di Bash, esegui zsh hello.sh. La shell che si apre in modo interattivo nel terminale è solitamente Zsh, ma ciò non significa che ogni script debba essere eseguito con Zsh; usa l'interprete per cui lo script è stato scritto. Lo shebang di uno script spesso indica quell'interprete.
Concedi i permessi di esecuzione. Nella stessa finestra del Terminale e nella stessa cartella, esegui:
chmod +x hello.sh
Questo aggiunge i permessi di esecuzione a questo file. Si tratta di una modifica da apportare una sola volta, a meno che i permessi non vengano successivamente ripristinati. Evita di utilizzare impostazioni di permessi più ampie del necessario; chmod +xqueste sono sufficienti per uno script personale di tua proprietà.
Il comando chmod +x rende hello.sh eseguibile.
Avvialo dalla cartella corrente. Digita:
./hello.sh
Questo ./comando indica alla shell di eseguire il file nella directory corrente. Senza di esso, la shell in genere cerca nelle cartelle elencate in PATHanziché nella cartella corrente. Se ti trovi in un'altra posizione, usa cdper tornare alla cartella dello script oppure inserisci il suo percorso completo, ad esempio ~/Downloads/hello.sh.
L'esecuzione di ./hello.sh avvia lo script eseguibile e ne mostra l'output.
Errori comuni e relative soluzioni
“Permesso negato” dopo aver utilizzato ./hello.sh: conferma il nome del file, quindi esegui chmod +x hello.sh. Oppure usa bash hello.shse si tratta di uno script Bash e non hai bisogno dell'esecuzione diretta.
"File o directory non esistente": conferma la cartella con pwd, elenca il suo contenuto con lse controlla l'ortografia e le maiuscole. Assicurati che il file non sia effettivamente chiamato hello.sh.txt.
"Comando non trovato" all'interno dello script: lo script potrebbe dipendere da un'utilità mancante o non presente PATH. Controlla la documentazione dello script prima di installare qualsiasi cosa.
"Interprete non valido" o un errore che indica ^M: la prima riga potrebbe puntare a un interprete non disponibile oppure il file potrebbe utilizzare terminazioni di riga in stile Windows. Controllare lo shebang e salvare il file con terminazioni di riga Unix (LF).
Quale metodo dovresti usare?
Utilizzalo bash hello.shper un'esecuzione rapida quando sai che si tratta di uno script Bash. Utilizzalo chmod +x hello.shseguito da ./hello.shquando vuoi avviarlo direttamente e lasciare che il suo shebang scelga l'interprete. Nessuno dei due metodi installa le dipendenze mancanti, corregge i comandi incompatibili o verifica se lo script è affidabile.