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 il FILENAME.
  • Se FILENAME esiste il comando source ritorna 0, 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.