# Variable d'entorn

Les variables d'entorn formen un conjunt de valors dinàmics que normalment afecten el comportament dels processos d'un ordinador.

## Obtenint i donant valors a les variables d'entorn

És possible accedir al valor d'una variable, tant per consultar-a com per modificar-la, dins de scripts i també des de la línia d'ordres. La forma en què s'accedeix al contingut d'una variable varia entre cada sistema operatiu. En el cas de sistemes Unix, depèn de l'intèrpret d'ordres (o shell) que es faci servir, ja que aquest és l'encarregat del tractament de les variables d'entorn.

### MS-DOS i Windows

Per exemple, per mostrar el contingut de la variable d'entorn PATH (que manté la ruta de recerca de programes en el sistema), teclejar des de la línia d'ordres:
La comanda SET , sense arguments, mostra totes les variables d'entorn juntament amb els seus respectius valors.
Per assignar un valor a una variable s'usa:
Cal esmentar que aquesta assignació serà visible des de tots els programes iniciats a partir d'aquest moment des de la mateixa finestra de línia d'ordres, però no des d'altres, ni es mantindrà de forma permanent.
Per aconseguir un canvi permanent, es pot usar la comanda SETX (opcional, disponible dins de les Eines de Suport). O bé, des de l'escriptori de Windows XP:
* Fer clic sobre la icona de meu ordinador.
* Al menú contextual, escollir l'opció Propietats.
* A continuació en la finestra emergent, fer clic a la pestanya Opcions avançades.
* Després a baix, buscar i prémer el botó "Variables d'entorn".
* Per a modificar una variable existent, fer clic en el seu nom i després en el botó Modificar. Per crear una nova variable, utilitzar el botó Nova.
Els valors inicials de les variables d'entorn s'emmagatzemen en el registre de Windows, així que una tercera forma d'aconseguir un canvi permanent és modificant aquests valors inicials. Les variables de l'usuari s'emmagatzemen en HKEY_CURRENT_USER \Environment i les variables del sistema en HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Session Manager \Environment .
El maneig de variables d'entorn en Windows ha estat millorat (a partir de XP i versions posteriors). Per exemple, per mostrar el PATH del sistema, però utilitzant les Barres '/' en lloc de ' \':
Per guardar a la variable YEAR l'any actual (els últims quatre caràcters de la variable% DATE%):

### UNIX/GNU/Linux

En diverses interfícies text d'Unix i Linux, com per exemple en bash, es mostra el valor d'una variable mitjançant:
Les comandes ' env ', ' setembre ', i ' printenv ' mostren totes les variables d'entorn juntament amb els seus respectius valors. env i setembre s'usen també per assignar valors a variables d'entorn i normalment són funcions incorporades de l'intèrpret d'ordres. printenv permet també mostrar el valor d'una variable d'entorn particular si se li passa el seu nom com a únic paràmetre.
La forma d'assignar un valor a una variable és:
Es poden utilitzar també els següents comandaments, encara que depenen de l'intèrpret.
El maneig de variables d'entorn és altament versàtil en entorns UNIX/Linux.

## Variables d'entorn comuns
### Windows
#### % COMSPEC%

Aquesta variable conté la ruta completa al processador d'ordres, cmd.exe

#### %PATH%

Aquesta variable conté una llista separada per punt i comes de directoris en els quals l'intèrpret d'ordres buscarà els fitxers executables que no es invoquen amb una ruta explícita. Nota: és possible assignar valors a PATH amb la comanda homònim, sense necessitat d'utilitzar SET. Per exemple, per poder invocar el navegador firefox des de qualsevol directori:
Si obrim un nou intèrpret d'ordres i escrivim
s'obrirà una finestra del navegador, sense necessitat d'escriure la ruta completa al programa.

#### % PATHEXT%

Aquesta variable conté una llista separada per punt i comes amb les extensions conegudes dels fitxers executables. Si el nom d'un executable acaben amb una extensió inclosa en aquesta llista, és possible ometre aquesta extensió en invocar el programa. Un valor típic és . COM,. EXE,. BAT,. CMD,. VBS,. VBE,. JS,. JSE,. WSF;. WSH . Per exemple, pel fet que. EXE està a la llista, podem escriure firefox (en lloc de firefox.exe ) per invocar.

#### % TEMP% i% TMP%

Aquestes variables contenen la ruta al directori on emmagatzemar fitxers temporals. Nota:% TEMP% en MS-DOS 5 apuntava sovint a C: \DOS, de manera que eliminar tots els fitxers de% TEMP% podia causar molts problemes. El creador del navegador web Arachne no va considerar aquesta possibilitat, el que li va generar diverses crítiques.

#### Valors per defecte de les variables d'entorn

| Variable | Windows XP | Windows Vista/7 |
| % ALLUSERSPROFILE% (% PROGRAMDATA%) | C: \Documents and Settings \All Users | C: \ProgramData |
| % APPDATA% | C: \Documents and Settings \{username}\Dades de Programa | C: \Users \{username}\AppData \Roaming |
| % COMPUTERNAME% | {Nombredeordenador} | {Nombredeordenador} |
| % COMMONPROGRAMFILES% | C: \fitxers de programa \Archivos comunes | C: \fitxers de programa \Archivos comunes |
| % COMMONPROGRAMFILES (x86)% | C: \fitxers de programa (x86) \fitxers comuns | C: \fitxers de programa (x86) \fitxers comuns |
| % COMSPEC% | C: \Windows \System32 \cmd.exe | C: \Windows \System32 \cmd.exe |
| % HOMEDRIVE% | C: \ | C: \ |
| % HOMEPATH% | C: \Documents and Settings \{username} | \Usuaris \{username} |
| % LOCALAPPDATA% | No disponible si és una declaració explícita. | C: \Usuaris \{username}\Application Data \Local |
| % LOGONSERVER% | \ \{Domain_logon_server} | \ \{Domain_logon_server} |
| % PATH% | C: \Windows \system32, C: \Windows, C: \Windows \System32 \Wbem | C: \Windows \system32, C: \Windows, C: \Windows \System32 \Wbem |
| % PATHEXT% | . COM,. EXE,. BAT,. CMD,. VBS,. VBE,. JS,. WSF,. WSH | . Com,. Exe,. Bat,. Cmd,. Vbs,. Vbe,. Js,. JSE,. WSF,. WSH,. Msc |
| % PROGRAMFILES% | C: \Program \ | C: \Program \ |
| % PROGRAMFILES (X86)% | C: \fitxers de programa (x86) (només en versions 64 bits) | C: \fitxers de programa (x86) (només en versions 64 bits) |
| % PROMPT% | Codi del format de cmd.exe. El codi és normalment $ P $ G | Codi del format de cmd.exe. El codi és normalment $ P $ G |
| % SystemDrive% | C: \ | C: \ |
| % SystemRoot% | Catàleg de Windows, normalment C: \Windows; anteriorment C: \WinNT | C: \Windows |
| % TEMP% i% TMP% | C: \Documents and Settings \{username}\Local Settings \Temp | C: \Users \{username}\AppData \Local \Temp |
| % USERDOMAIN% | {Userdomain} | {Userdomain} |
| % USERNAME% | {Username} | {Username} |
| % USERPROFILE% | % SystemDrive% \Documents and Settings \{username} | C: \Users \{username} |
| % WINDIR% | C: \Windows | C: \Windows |
| % PUBLIC% | | C: \Users \Public |
| % PSModulePath% | | % SystemRoot% \system32 \WindowsPowerShell \v1.0 \Modules \ |

#### Pseudo-variables

No emmagatzemen un valor fix, sinó que s'avaluen al moment de demanar el seu valor.

##### % CD%

S'expandeix a la cadena del directori actual.

##### % DATE%

S'expandeix a la data actual usant el mateix format que la comanda DATE.

##### % TIME%

S'expandeix a l'hora actual usant el mateix format que la comanda TIME.

##### % RANDOM%

S'expandeix a un nombre decimal aleatori entre 0 i 32.767.

##### % ERRORLEVEL%

S'expandeix al valor de NIVELL D'ERROR actual (usualment, el codi de retorn de l'últim ordre extern executat).

##### % CMDEXTVERSION%

S'expandeix al nombre de versions de les extensions del processador d'ordres.

##### % CMDCMDLINE%

S'expandeix a la línia d'ordres original que va invocar el processador d'ordres.

### UNIX
#### $ PATH

Conté una llista separada per dos punts de directoris en els quals l'intèrpret d'ordres buscarà els fitxers executables que no es invoquen amb una ruta. Per raons òbvies de seguretat, normalment aquesta variable d'entorn no conté el directori corrent.

#### $ HOME

Conté la ubicació del directori d'usuari. D'aquesta manera, els dos ordres següents tenen el mateix efecte:

#### $ DISPLAY

Conté l'identificador de l' display que els programes de X11 d'usar per defecte.

#### $ LANG, $ LC_ALL

LANG conté el locale per defecte del sistema; LC_ALL permet ignorar el seu contingut. Per exemple, si conté pt_BR , llavors l'idioma serà portuguès de Brasil i el locale serà Brasil.

#### $ RANDOM

És una variable d'entorn especial que, quan s'intenta obtenir el seu contingut, retorna un valor aleatori.

## Referències

* ↑ La comanda SET en la documentació de Windows XP
* ↑ Eines de suport tècnic de Windows XP Service Pack 2
* ↑ arachne.cz/msg06852.html Fil a la llista de correu de Arachne sobre el dany potencial

## Enllaços externs

* en-us; 310.519 How To Manage Environment Variables in Windows XP - microsoft.com
* Environment Variables in Windows XP Arxivat 2007-09-26 a Wayback Machine. - Computer Education