Il comando export consente di esportare una variabile definita in un processo shell per i sottoshell che saranno generati da essi. L'esportazione è simile alla semantica della fork(2) quando le variabili sono copiate da un processo padre a quello figlio. Si noti che la copia/esportazione si ha per valore in avanti, ossia dal padre al figlio, e non dai processi figli verso quello padre. In altre parole, al momento dell'export viene copiata la variabile nello shell figlio, ma i due valori restano indipendenti. Questo significa che se lo shell figlio modifica il valore, il padre non vede la modifca. E' facile verificare questo con una coppia di script:
#!/bin/bash
# script1.sh (script padre)
VAR1="variabile1"
echo "Script1 : $VAR1"
export VAR1
./script2.sh
echo "Script1 : $VAR1"
#!/bin/bash
# script2.sh (script figlio)
echo "Script2 : $VAR1"
VAR1="Variabile2"
echo "Script2 : $VAR1"
Come si può notare lo script1.sh definisce una variabile, la esporta, invoca un processo figlio e controlla nuovamente il valore della variabile. L'esecuzione di tale script produce il seguente output:
Script1 : variabile1
Script2 : variabile1
Script2 : Variabile2
Script1 : variabile1
Come si può notare, lo script1.sh vede sempre e solo il valore originale della variabile VAR1, anche se quest'ultima è stata modificata dallo script2.sh. Questo è dovuto proprio al fatto che l'export funziona dal padre al figlio e non viceversa.
Nessun commento:
Posta un commento