Le miniguide di UbaWeb

Come eseguire script di shell

Premessa Torna su

02 gennaio 2014 - Spesso, quando illustro uno script, devo ripetere sempre le stesse cose: come rendere eseguibile lo script, come eseguirlo e dove conviene salvarlo per poterlo richiamare da qualsiasi directory.
Da ora in avanti farò riferimento a questa pagina.

Come impostare i permessi di esecuzione di uno script Torna su

Uno script non è altro che un semplice file di testo, per renderlo eseguibile gli si devono attribuire i permessi di esecuzione!
I permessi si possono assegnare da terminale o da applicazione grafica su installazioni desktop.

Da terminale
Il metodo più rapido per rendere eseguibile un file è utilizzando il terminale:
Poniamo che il nostro script si chiami "script_prova.sh" e sia in "$HOME/prove_temp/"
Aprire un terminale (o portarsi) nella directory che contiene il file da rendere eseguibile e digitare:
chmod +x script_prova.sh
In questo modo si è dato il permesso di escuzione a tutti, equivale, per esempio, a chmod 0755 script_prova.sh.
Se si vuole rendere eseguibile solo per l'utente proprietario si può usare chmod u+x script.sh oppure usare il metodo numerico di chmod (vedere man chmod).

Da desktop
Fare clic destro sul file "script_prova.sh" e cliccare "Proprietà" nel menù contestuale
nella finesta che si apre fare clic sul tab "Permessi"
non resta che spuntare i gruppi di utenti per cui si vuol rendere eseguibile lo script.

esecuzione dello script Torna su

Con i permessi sistemati a dovere, per eseguire lo script non basta scriverne il nome nel terminale; va indicato anche il percorso che porta al file, se siamo nella directory che lo contiene basta l'indirizzo relativo "./", che significa "la directory corrente"... quindi:
./script_prova.sh
Se si deve eseguire lo stesso script fuori dalla directory che lo contiene, conviene indicare il percorso assoluto, per esempio:
/home/giovanni/prove_temp/script_prova.sh
Fortunatamente esistono metodi per non dover inserire il percorso all'eseguibile, basta che il file eseguibile si trovi in una directory presente nella variabile d'ambiente "$PATH"!
Per vedere le directory presenti in "$PATH" basta un semplice echo $PATH dato da terminale;
le varie directory sono separate da ":".
Volendo si può aggiungere la nostra directory a "$PATH" temporaneamente,
(esportandola con "export PATH=${PATH}:$HOME/giovanni/prove_temp"
oppure permanentemente,
(inserendo in $HOME/.bashrc la riga: export PATH=${PATH}:~/prove_temp)

Dove conviene salvare gli script? Torna su

Per poter eseguire gli script da qualsiasi directory senza dover inserire il percorso del file da eseguire e senza modificare il contenuto di "$PATH", consiglio di inserire i propri file in /usr/local/bin;
per farlo basta copiare o spostare (cp o mv) il file in quella directory per esempio:
cp "/$HOME/prove_temp/script_prova.sh" "/usr/local/bin/"

Note Torna su

Non ho indicato gli altri metodi per eseguire gli script, accenno solo un paio di esempi:
sh script_prova.sh usa l'interprete "sh"
bash script_prova.sh usa l'interprete "bash"

Come indicare quale interprete utilizzare per un dato script quando richiamato con ./nome_script?
Basta inserire nella prima riga dello script lo Sha-Bang, cioè i caratteri "#!" seguiti dal percorso dell'interprete (il nome del file eseguibile); per esempio:
#!/usr/bin/sh
#!/usr/bin/bash
#!/usr/bin/python
Ricordarsi che l'estensione non conta niente!
Io inserisco quasi sempre ".sh" per distinguere facilmente gli script dai normali file di testo; in realtà uso sempre script bash quindi sarebbe più corretto dare estensione ".bash" ma quello che conta veramente è lo Sha-Bang.

Per chi vuole imparare lo scripting Bash

Manuale ufficiale di Bash
Guida avanzata di scripting Bash Inglese - Italiano

Bye 8-)

Torna su
Sito realizzato da: UbaWeb di Giovanni Ubaldi

Licenza Creative Commons Tutto il contenuto di questo sito se non diversamente dichiarato è di Giovanni Ubaldi ed è distribuito con Licenza:

Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.