Variabili d'ambiente - un po' di concetti

consoleQuesto è un piccolo specchietto che dovrebbe servire a dare un idea di cos'è una variabile d'ambiente, a cosa può servire e come gestirla.

 

Menu per muoversi nel post:

 

Iniziamo dalla base:

D. Cos'è una variabile?

R. Un contenitore, una scatola, dove qualcuno inserisce un valore.

D. Perché d'ambiente?

R. Prendiamo per esempio una foresta, essa può essere sintetizzata tramite una serie di parametri: superficie della zona, densità degli alberi, umidità dell'aria, quantità di pioggia annua, ect ect... Questa lista di valori descive l'ambiente foresta. Ora scambiate la foresta con un sistema operativo (nel nostra caso linux), le variabili d'ambiente che lo descrivono possono essere: l'utente che si è loggato, il tipo di shell che si sta usando, la directoty home dell'utente, ect ect.. queste varabili servono appunto a descrivere l'ambiente in cui si lavora.

D. A che serve tutto questo?

R. Mettiti nei panni di un programma: non sai su che mattina stai girando o chi è l'utente che ti sta lanciando, a meno che qualcuno non te lo dica. Hai mai visto un programma chiederti su che macchina gira? No! E' perché sfrutta delle variabili d'ambiente.

 

Quanto descritto sopra è una semplice inzicazione di cosa sono queste variabili e di cosa se ne fa il sistema stesso.

Queste variabili di solito vengono settate correttamente dal sistema in base a dei file di configurazione, per esempio battendo da terminale questo comando:

# less ~/.bashrc

Verranno mostrate alcune variabili d'ambiente valide per l'utente con il quale siete loggati.

 

Come gestire queste variabili.

Non vogio entrare nel merito del discorso sul dove sono definite tutte le variabili d'ambiente, perché è un argomento sul quale io stesso non sono molto ferrato, in questa parte del blog mi soffermerò più che altro sul come visualizzare, settare e cancellare una variabile d'ambiente.

Ecco alcuni comandi/concetti base:

  • Per avere una lista delle variabili d'ambiete (non tutte ahimè!)

# env

  • Per settare una variabile d'ambiente:

# export NOME_VARIABILE="valore della variabile"

  • Per mostrare il valore di una variaible d'ambiente:

# echo $NOME_VARIABILE

  • Per cancellare una variabile d'ambiente:

# unset NOME_VARIABILE

NB: valorizzare una variabile d'ambiente ad un valore nullo (export NOME_VARIABILE="" ) non cancella la variabile per cancellarla bisogna usare il comando unset

 

Piccolo esempio:

 ## apriamo una shell e guardiamo che variabili d'ambiente ci sono

# env

## ora cerchiamo all'interno di env una variabile chiamata MIA_VARIABILE

# env | grep MIA_VARIABILE

## non dovrebbe ritornare un bel niente, perché ancora non è settata

## ora date questo comando:

# export MIA_VARIABILE="ma guarda che bella variabile che sono"

## ancora non dovrebbe succedere niente di interessante

## ora provate

# echo $MIA_VARIABILE

## l'output che vi mostra la shell non penso abbia bisogno di commenti :) :)

## ora proviamo a lanciare il secondo comando dell'esercizio

# env | grep MIA_VARIABILE

## dovrebbe mostrare un output molto significativo, del tipo:

# MIA_VARIABILE=ma guarda che bella variabile che sono

## abbiamo cercato l'accoppiamento nome=valore di una speficia variabile d'ambiente!

## ora cancelliamo il valore della variabile (il valore non la variabile stessa) e ricerchiamola

# export MIA_VARIABILE=""

# env | grep MIA_VARIABILE

## l'output questa volta dovrebbe essere tipo questo:

# MIA_VARIABILE=

## questo sifnifica che il contenitore (la variabile) è ancora in memoria del sistema, solo che il suo valore è nullo!

## (in realtà non è nemmeno nullo ma passatemi il termine se no facciamo notte)

## per cancellare la variabile dalla lista facciamo dunque:

# unset MIA_VARIABILE

## ora ri-cercandola come prima non la troverete più! puff..

# env | grep MIA_VARIABILE

 

Conclusioni.

Questo post veloce è una piccola piccola guida sull'uso delle variabili globali, troverete molto altro cercando su google, cosi come ho cercato io (e non solo io).

Vi rimando alla pagina di wikipedia per maggiori informazioni.