Variabile d'ambiente (Windows)

Da Wikipedia, l'enciclopedia libera.

Nei sistemi operativi Microsoft Windows le variabili d'ambiente sono un tipo di variabili specifiche per processo[1] che esibiscono le seguenti caratteristiche:

  • sono accessibili attraverso un'apposita API del sistema operativo;
  • in fase di creazione di un nuovo processo, sono inizializzate con una copia dei valori provvisti dal processo padre; il comportamento predefinito è quello di usare una copia delle variabili d'ambiente del processo creante[1];
  • un processo non può modificare direttamente le variabili d'ambiente di un altro processo, tuttavia esiste un ambiente di riferimento che i processi possono consultare[2] e modificare[3], e che viene usato dalla shell grafica per inizializzare le variabili d'ambiente dei programmi che avvia.

L'uso delle variabili d'ambiente come strumento di configurazione è andato via via riducendosi al minimo, dato che questa funzione è affidata al registro di sistema.

Ambiente di riferimento[modifica | modifica sorgente]

Nei sistemi Microsoft Windows NT (quindi anche Windows 2000, Windows XP e successivi) è presente un ambiente di riferimento che la shell grafica usa per inizializzare le variabili d'ambiente dei nuovi processi che avvia, e che può essere modificato sia dai processi in generale che tramite un'apposita interfaccia grafica. Esso è strutturato in tre livelli[4]:

  1. il livello delle 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 variabili d'ambiente di questo tipo;
  2. il livello delle variabili d'ambiente utente; esse sono specifiche per il particolare utente, che può liberamente assegnare valori e creare nuove variabili. Una variabile d'ambiente utente maschera una variabile d'ambiente di sistema che abbia lo stesso nome, con l'eccezione della variabile PATH, che invece viene concatenata a quella di sistema;
  3. il livello delle variabili d'ambiente assegnate in autoexec.bat, che esistono solamente per preservare la compatibilità con alcuni programmi MS-DOS.

Le variabili d'ambiente di sistema e le variabili d'ambiente utente possono essere modificate a caldo, senza richiedere un riavvio del sistema: i nuovi processi hanno visibilità immediata delle modifiche, mentre i processi preesistenti debbono essere riavviati per far prendere in considerazione i nuovi valori.

Le variabili d'ambiente assegnate in autoexec.bat sono assegnate in maniera stabile all'avvio del sistema e non possono essere modificate a caldo, tuttavia è possibile mascherarne i valori con delle variabili d'ambiente utente aventi lo stesso nome.

Ogni programma che avvia altri programmi ha la possibilità e l'onere di consultare l'ambiente di riferimento in modo da provvedere un insieme adeguato di variabili d'ambiente ai programmi avviati, oppure può limitarsi a passare una copia delle proprie variabili d'ambiente (in maniera non dissimile da quanto avviene per i sistemi Unix e Unix-like), confidando che l'ambiente di riferimento non sia stato nel frattempo modificato.

Vincoli su nomi e valori[modifica | modifica sorgente]

Nei sistemi Microsoft Windows e MS-DOS non viene fatta distinzione tra lettere maiuscole e minuscole nei nomi delle variabili d'ambiente, per cui "PATH" equivale a "Path" e "path"; è tuttavia comune specificare i nomi esclusivamente con lettere maiuscole, ed usare solo lettere (e non ad esempio cifre).

Per il modo in cui sono memorizzate, i nomi delle variabili d'ambiente non possono contenere il carattere uguale ("=")[3] , ed i valori possono essere stringhe di caratteri ANSI (oppure Unicode) terminate da un byte a zero (o due in caso di stringhe Unicode). Ne consegue che il nome ed il valore di una variabile d'ambiente non possono direttamente contenere dati binari.

I valori delle variabili d'ambiente di sistema non possono eccedere i 1024 caratteri.[3]

Utilizzo[modifica | modifica sorgente]

Nell'interfaccia a riga di comando di tutti i sistemi Microsoft Windows e MS-DOS è possibile assegnare un valore ad una variabile d'ambiente tramite il comando set[5] (sostituendo un eventuale valore assegnato in precedenza), ed utilizzarne il valore nelle righe di comando e nei file batch specificandone il nome tra caratteri "%". Ad esempio, in un file batch:

 set NOME=roberta
 echo %NOME%

È anche possibile combinare le due cose, ad esempio per estendere il valore di una variabile d'ambiente includendo nel nuovo valore anche il valore precedente:

 set PATH=%PATH%;C:\roberta

La visibilità delle variabili d'ambiente assegnate in questo modo è limitata allo specifico interprete dei comandi ed ai programmi da esso avviati. Per modificare anche l'ambiente di riferimento è possibile usare il comando setx[6]

Variabili d'ambiente di rilievo[modifica | modifica sorgente]

PATH[modifica | modifica sorgente]

La variabile d'ambiente PATH specifica un elenco di directory separate da punto e virgola ";" in cui il sistema ricerca i file eseguibili (nell'ordine in cui sono indicate), oltre che nella directory corrente.

Essa è usata quando il nome del file eseguibile non è qualificato con il percorso della directory che lo contiene, sia per programmi che per librerie software.

È quindi pratica comune, in fase di installazione di un nuovo programma, estendere il valore di questa variabile d'ambiente in modo da includere anche la directory ove risiedono i file eseguibili del programma che è stato installato.

Essa costituisce un'eccezione alla regola per cui i valori delle le variabili d'ambiente utente mascherano il valore di variabili d'ambiente di sistema con lo stesso nome: il valore utente in questo caso viene concatenato al valore di sistema invece di sostituirlo.

PATHEXT[modifica | modifica sorgente]

Questa variabile contiene un elenco separato da punto e virgola ";" delle estensioni che un nome di file deve avere per essere considerato eseguibile dal sistema. Un valore tipico è:

 .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH

TEMP e TMP[modifica | modifica sorgente]

Queste variabili indicano il percorso completo a delle directory destinate a contenere dei file temporanei.

Note[modifica | modifica sorgente]

  1. ^ a b (EN) Changing Environment Variables (Windows). URL consultato il 31-05-2008.
  2. ^ (EN) CreateEnvironmentBlock Function. URL consultato il 31-05-2008.
  3. ^ a b c (EN) Environment Variables (Windows). URL consultato il 31-05-2008.
  4. ^ Variabili d'ambiente in Windows NT, 03-02-2006. URL consultato il 24-05-2008.
  5. ^ (EN) Set. URL consultato il 24-05-2008.
  6. ^ setx. URL consultato il 31-05-2008.

Collegamenti esterni[modifica | modifica sorgente]