Introduzione
Il comando source
legge ed esegue i comandi dal file specificato come argomento nell'attuale ambiente shell. È utile caricare funzioni, variabili e file di configurazione negli script di shell.
source
è una shell integrata in Bash e altre shell popolari utilizzate nei sistemi operativi Linux e UNIX. Il suo comportamento può essere leggermente diverso da shell a shell.
Sintassi del comando source
La sintassi per il comando source
è la seguente:
source FILENAME [ARGUMENTS]
. FILENAME [ARGUMENTS]
source
e.
(un punto) sono lo stesso comando.- Se
FILENAME
non è un percorso completo di un file, il comando cercherà il file nelle directory specificate nella variabile ambientale$PATH
. Se il file non viene trovato nel comando$PATH
, cercherà il file nella directory corrente. - Se
ARGUMENTS
viene fornito, diventeranno parametri posizionali per ilFILENAME
. - Se
FILENAME
esiste il comandosource
ritorna0
, altrimenti se il file non viene trovato tornerà1
.
Esempio di comando source
In questa sezione, vedremo alcuni esempi di base su come usare il comando source
.
Se si dispone di script shell che utilizzano le stesse funzioni, è possibile estrarli in un file separato e quindi sorgente quel file nei propri script.
In questo esempio, creeremo un file che include una funzione bash che controlla se l'utente che esegue lo script è root e, in caso contrario, mostra un messaggio e esce dallo script.
sudo nano functions.sh
Incollare il seguente codice:
check_root () {
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
}
Ora in ciascuno dei tuoi script che devono essere eseguiti solo dall'utente root procedi con il comando source del file functions.sh
e chiama la funzione:
#!/usr/bin/env bash
source functions.sh
check_root
echo "I am root"
Se esegui lo script sopra come utente non root, lo script stampa "This script must be run as root" ed esce.
Il vantaggio di questo approccio è che i tuoi script saranno più piccoli e più leggibili, puoi riutilizzare lo stesso file di funzione ogni volta che è necessario e nel caso in cui sia necessario modificare una funzione, modificherai solo un file.
File di configurazione Bash
Con il comando source
, puoi anche leggere le variabili da un file. Le variabili devono essere impostate utilizzando la sintassi Bash, VARIABLE=VALUE
.
Creiamo un file di configurazione di prova:
sudo nano config.sh
Incollare il seguente codice:
VAR1="foo"
VAR2="bar"
Nel tuo script bash usa il comando source
per leggere il file di configurazione:
#!/usr/bin/env bash
source config.sh
echo "VAR1 is $VAR1"
echo "VAR2 is $VAR2"
Se si esegue lo script, l'output sarà simile al seguente:
VAR1 is foo
VAR2 is bar
Conclusione
In questa guida, hai imparato come usare il comando source
incorporato negli script della shell.