Come definire una variabile con o senza esportazione in bash

Come definire una variabile con o senza esportazione in bash

Bash è un linguaggio di scripting popolare utilizzato per automatizzare le attività e lavorare con l'interfaccia della riga di comando. Una delle caratteristiche fondamentali di Bash è la capacità di definire le variabili, che possono essere utilizzate per archiviare i valori e passarle tra comandi o script diversi. Tuttavia, quando si definiscono le variabili in bash, si deve essere chiari sulla differenza tra la definizione di una variabile con o senza la parola chiave di esportazione.

Segui le linee guida di questo articolo per imparare a definire una variabile con o senza esportazione in bash.

Definizione di una variabile senza esportazione in bash

La definizione di una variabile senza esportazione rende una variabile locale che è accessibile solo all'interno della sessione o dello script di shell corrente, il che significa che la variabile non può essere accessibile dai processi o script del figlio che vengono chiamati all'interno dello script corrente. Le variabili locali sono utili quando si memorizzano valori temporanei necessari solo all'interno di una parte specifica di uno script, ad esempio, supponiamo che tu abbia uno script che definisce una variabile chiamata My_var senza esportazione:

#!/Bin/Bash
My_var = "ciao, linux!"
echo $ my_var
./Child_script.sh


In questo caso, My_var è una variabile locale ed è accessibile solo all'interno dello script corrente. Quando lo script viene eseguito, stampa "Ciao, Linux!" alla console, ma quando chiama lo script figlio (./Child_script.sh), lo script figlio non può accedere al valore di My_var.


Nell'immagine sopra, si può vedere chiaramente che quando lo script figlio viene chiamato non riesce ad accedere al valore variabile e restituisce una riga vuota al posto dell'output del file di script.

Definizione di una variabile con esportazione in bash

D'altra parte, la definizione di una variabile con la parola chiave di esportazione lo rende una variabile di ambiente. Le variabili di ambiente sono accessibili a tutti i processi figlio generati dalla sessione di shell corrente o script. Ciò significa che la variabile può essere utilizzata su diversi script o comandi che vengono chiamati all'interno dello script corrente, quindi consideriamo lo stesso script, ma con My_var definito con esportazione:

#!/Bin/Bash
esporta my_var = "ciao, linux!"
echo $ my_var
./Child_script.sh


In questo caso, My_var è una variabile di ambiente ed è accessibile a tutti i processi figlio generati dalla sessione di shell corrente o script. Quando lo script viene eseguito, stampa "Ciao, Linux!" alla console e quando chiama lo script figlio ./Child_script.sh, Lo script figlio può accedere al valore di My_var.


Nell'immagine sopra, si può vedere chiaramente che quando viene chiamato lo script figlio, si accedeva al valore variabile e restituiva il valore che era "Ciao, Linux".

Nota: Qui nel codice di esempio, ho creato lo script figlio che chiama la variabile nello script principale, quindi ecco il codice shell per lo script figlio: inoltre, è necessario rendere eseguibile il file script utilizzando il "Chmod +X" comando in modo da poter eseguire lo script.

#!/Bin/Bash
echo $ my_var

Conclusione

Quando si lavora con le variabili in bash, è importante comprendere l'ambito della variabile. La definizione di una variabile senza esportazione rende una variabile locale che è accessibile solo all'interno della sessione o dello script di shell corrente mentre la definizione di una variabile con l'esportazione rende una variabile di ambiente accessibile a tutti i processi figlio generati dalla sessione di shell corrente o script.