Pagina iniziale | Navigazione |
Google

Variabile d'ambiente

Table of contents
1 Le variabili d'ambiente
2 Le variabili d'ambiente nei sistemi operativi Microsoft
3 Le variabili d'ambiente nei sistemi operativi Unix

Le variabili d'ambiente

Il termine variabile d'ambiente traduce l'inglese environment variable. Si tratta di una normale variabile, ma posta al di fuori di ogni programma. Tali variabili hanno in genere un nome composto da lettere maiuscole e possono contenere solo stringhe di caratteri, non dati binari.

Una variabile d'ambiente contiene usualmente delle informazioni condivise da più programmi. In questo senso si possono considerare le variabili d'ambiente come delle variabili globali, quindi come uno spazio di memoria condiviso da più processi in esecuzione, ma è fortemente sconsigliato il loro uso in questo senso, se non in applicazioni elementari con requisiti di sicurezza nulli e necessità di uno spazio di memoria condiviso molto ridotto, usualmente limitato a poche variabili.

In alcuni sistemi operativi, come Windows della Microsoft, esse sono condivise da tutti i processi in esecuzione. Nei sistemi Unix e derivati, come Linux, esse sono una proprietà di un certo programma (in genere una shell per eseguire comandi) e vengono ereditate dai programmi da essa lanciati. Programmi diversi possono quindi avere variabili d'ambiente diverse, e questa caratteristica viene molto sfruttata.

Le variabili d'ambiente nei sistemi operativi Microsoft

In tutti i sistemi operativi della Microsoft si utilizza il comando Set per gestire le variabili d'ambiente da interfaccia a riga di comando, mentre i membri della famiglia NT (quindi anche Windows 2000, Windows XP e Windows 2003) a partire dalla versione 3.5 hanno introdotto la possibilità di modificare le variabili d'ambiente anche tramite interfaccia grafica.
La famiglia NT ha introdotto anche ulteriori innovazioni: mentre per tutti gli ambienti operativi basati sul DOS vi è soltanto un livello di variabili d'ambiente, che vengono caricate in una sezione di memoria che è condivisa da tutti i processi, all'avvio del sistema, i membri della famiglia NT gestiscono 3 differenti livelli di variabili d'ambiente:
  1. le variabili d'ambiente di sistema, alcune delle quali sono nascoste e/o di uso riservato al sistema; soltanto gli amministratori del sistema possono aggiungere o modificare questo tipo di variabili d'ambiente.
  2. le variabili d'ambiente utente; ogni utente di un sistema NT può impostare liberamente queste variabili, e se l'utente sceglie un nome uguale a quello di una variabile d'ambiente di sistema, questa verrà sostituita; una notevole eccezione è la variabile d'ambiente PATH, che invece viene concatenata a quella di sistema.
  3. le variabili d'ambiente configurate su autoexec.bat, anche se la Microsoft ne ha deprecato l'uso, conservando questa possibilità soltanto per preservare la compatibilità di alcuni software Dos; tra l'altro mentre le variabili d'ambiente di sistema ed utente possono essere modificate a caldo, non necessitano quindi di un riavvio del computer ma soltanto un riavvio del processo che le dovrà leggere ed a volte nemmeno quello, le variabili d'ambiente configurate su autoexec.bat possono essere lette soltanto nella fase di avvio del sistema.
I sistema Windows NT riescono a modificare a caldo le variabili d'ambiente grazie alla loro istantanea registrazione su speciali chiavi del registro di configurazione, che sono giustappunto adibite all'uopo; possiamo citare ad esempio HKEY_CURRENT_USER\\Environment o HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment.

La variabile d'ambiente PATH

La variabile d'ambiente PATH, che si può trovare in alcuni ambienti definita come Path o path, è una variabile importantissima, perché è una stringa che descrive la posizione delle directory i cui file eseguibili è possibile lanciare in esecuzione senza specificare il nome completo di percorso del file, ma soltanto il nome dell'applicazione; per chiarire questo punto, per eseguire un eventuale file eseguibile chiamato bene.exe che si trova nella directory individuata dal percorso C:\\mamma\\cucina\\ è fra quelli descritti dalla variabile PATH, allora lo potremo mandare in esecuzione scrivendo il comando bene nel prompt di dos da qualunque directory del file system; viceversa, avremmo potuto mandare in esecuzione il programma soltanto scrivendo un comando come C:\\mamma\\cucina\\bene.exe o lanciando bene soltanto se la directory corrente fosse stata C:\\mamma\\cucina\\.

Quindi la presenza del percorso di una directory all'interno della variabile PATH fa in modo che il sistema operativo vada a leggere anche in quella directory quando noi gli chiediamo di eseguire un determinato comando, e questo non è soltanto limitato al prompt di dos, ma anche, alle funzioni di sistema win32 che lanciano in esecuzione processi o caricano librerie a collegamento dinamico (le *.dll); nella fattispecie alcuni sviluppatori che vorrebbero semplificare la gestione dell'installazione e della disinstallazione dei loro prodotti preferiscono non copiare le librerie di funzione usate dalla loro applicazione nella windows system directory (usualmente c:\\winnt\\system32 in un sistema NT standard e c:\\windows\\system in un ambiente windows generico a 16 bit).

Occorre porre particolare attenzione al fatto che l'ordine delle directory, che debbono essere separate da punti e virgola (;) è significativo; ad esempio, data la seguente definizione di path:

  1. set PATH="c:\\papà\\cucina\\;c:\\mamma\\cucina\\"
Se all'interno di entrambe fosse presente un eseguibile chiamato bene.exe, scrivendo bene al prompt dei comandi noi eseguiremmo c:\\papà\\cucina\\bene.exe.

Il comando SET

Le variabili d'ambiente si possono impostare a livello di programmazione utilizzando le apposite funzioni di sistema, ma anche tramite il comando dell'interfaccia a linea di comando SET; la documentazione di SET è abbastanza estesa (basta digitare il comando help -set in risposta al prompt dos), soprattutto su Windows 2000, per cui rimandiamo a quella per chi volesse approfondire; nel codice seguente si usa una tecnica comunissima ed ampiamente utilizzata per estendere il valore di una variabile d'ambiente senza cancellare il suo contenuto precedente; ricordiamo che il comando SET normalmente sovrascriverebbe il contenuto della variabile d'ambiente; per ovviare a tutto ciò basta iniziare la definizione della variabile d'ambiente con il suo stesso nome racchiuso dal carattere percento (%), come nel seguente esempio:
set PATH=%PATH%;C:\\volevoAggiungereQuestoPercorso
Un'ultima raccomandazione è quella di non lasciare spazi tra il nome della variabile d'ambiente ed il segno d'uguale; ci si potrebbe non credere, ma le seguenti definizioni di variabili d'ambiente conducono alla creazione di due variabili d'ambiente distinte e separate:
  1. set senzaSpazio="no"
  2. set senzaSpazio ="yes"

Le variabili d'ambiente nei sistemi operativi Unix

Tutti i sistemi operativi Unix e derivati fanno largo uso di variabili d'ambiente. Il loro nome è in genere preceduto da un segno dollaro, per indicare che si sta parlando appunto di una variabile d'ambiente, e non può contenere spazi. Quelle che un utente vedrà più spesso sono $PATH, che ha un significato identico a quello esposto prima, e $HOME, che contiene il percorso della home directory dell'utente stesso. Queste variabili vengono settate al momento del login da uno script apposito, in modo che tutti i programmi lanciati dall'utente sappiano dove sta la sua home directory. $PRINTER contiene l'indirizzo di rete della stampante da utilizzare, e così via.

A differenza dei sistemi Windows, le variabili d'ambiente sono utilizzate per scambiare informazioni tra i programmi, e sono costantemente lette e modificate dai vari script che fanno funzionare il sistema. Vari comandi Unix (set, setenv, unset, unsetenv) permettono sia all'utente da linea di comando, sia da script o programmi, di creare, modificare e cancellare sul posto le variabili.

Ad esempio, un programma può settare una variabile d'ambiente per indicare ad altri programmi dove ha salvato delle informazioni. Oppure, l'utente può indicare quale stampante utilizzare per un documento modificando la variabile d'ambiente $PRINTER subito prima di dare il comando di stampa.


GNU Fdl - it.Wikipedia.org




Google | 

Enciclopedia |  La Divina Commedia di Dante |  Mappa | : A |  B |  C |  D |  E |  F |  G |  H |  I |  J |  K |  L |  M |  N |  O |  P |  Q |  R |  S |  T |  U |  V |  W |  X |  Y |  Z |