Variabila de mediu ( ing. variabilă de mediu ) este o variabilă text a sistemului de operare care stochează orice informație - de exemplu, date despre setările sistemului.
Variabilele de mediu sunt stabilite de utilizator sau de scripturile shell. Setul inițial de variabile este stabilit de scripturile de pornire ale sistemului de operare și scripturile lansate atunci când un utilizator se conectează la sistem, în special, /etc/profileși ~/.bash_profile.
Mediul este de mare importanță în sistemele UNIX, deoarece stochează multe setări atât pentru sistemul ca întreg, cât și pentru programe individuale. O caracteristică importantă este că atunci când este creat, procesul copil primește o copie locală a mediului procesului părinte și, prin urmare, nu poate schimba direct setările globale.
Mediul este un set de perechi „nume variabilă” și „valoare variabilă”, a căror gestionare este de obicei atribuită interpretului de comenzi. Deoarece există un număr mare de interpreți, sintaxa diferă în funcție de interpretul utilizat de utilizator. Atât „nume”, cât și „valoare” sunt sensibile la majuscule, „Nume” este de obicei în majuscule, spațiile nu sunt permise.
Scripturile folosesc de obicei declarații de natură ИМЯ_ПЕРЕМЕННОЙ="значение переменной", dar sintaxa exactă depinde de interpretul utilizat.
Pentru a obține valoarea unei variabile, precedați numele acesteia cu un semn dolar. De asemenea, uneori este necesar să includeți numele între paranteze (de exemplu, în scripturi make ).
Din linia de comandă, variabilele sunt gestionate folosind export și env .
Variabilele de mediu sunt setate în registrul Windows și de software. Ele pot fi folosite pe linia de comandă și în bara de adrese a File Explorer.
Variabilele de mediu Windows se împart în două categorii:
Accesarea unei variabile de mediu este posibilă în acest fel: %ИМЯ_ПЕРЕМЕННОЙ%. De asemenea, este posibil să extrageți o parte dintr-o variabilă dintr-o variabilă (dacă extensiile shell nu sunt dezactivate pe computer, acestea sunt activate implicit), de exemplu, imprimând diferite părți ale unei variabile VARfolosind linia de comandă Windows :
Lista variabilelor de mediu Windows instalate poate fi găsită tastând la promptul de comandă: setsau făcând clic pe butonul Variabile de mediu din fila Avansat din caseta de dialog Proprietăți sistem (Computerul meu→Proprietăți).
Nume | Scop | Exemplu de valoare |
---|---|---|
%ALLUSERSPROFILE% | Specifică calea către folder pentru documentele partajate și setările comune tuturor utilizatorilor . | C:\ProgramData\ |
%APPDATA% | Specifică calea către folderul în care sunt stocate setările unor programe ale utilizatorului curent. | C:\Documents And Settings\Администратор\Application Data |
%CLIENTNAME% | Variabila este definită numai în mediul Remote Desktop Connection. Stochează numele computerului (%COMPUTERNAME%) al clientului de acces la distanță. | MyPC |
%COMMONPROGRAMFILES% | Specifică calea către folderul în care sunt stocate fișierele partajate de programele instalate. | C:\Program Files\Common Files |
%COMPUTERNAME% | Stochează numele unui computer în rețeaua locală. | Начальник |
%COMSPEC% | Stochează calea către shell -ul Windows curent. | C:\Windows\System32\cmd.exe |
%HOMEDRIVE%, %SYSTEMDRIVE% | Stochează numele unității de sistem. | C: |
%HOMEPATH%, %USERPROFILE% | Stochează calea către folderul principal al utilizatorului | C:\Documents And Settings\Администратор |
%WINDIR% | Stochează calea către folderul în care este instalat Windows | C:\Windows |
%SYSTEMROOT% | Stochează calea către folderul de sistem (unde este stocat nucleul etc.) | C:\Windows |
%PROGRAMFILES% | Stochează calea către folderul cu aplicațiile instalate | C:\Program Files |
%SESSIONNAME% | Stochează numele sesiunii de utilizator. Într-o sesiune locală, valoarea este Consolă; într-o conexiune desktop la distanță folosind TCP/IP, este RDP-Tcp#<numărul sesiunii>. | Console, RDP-Tcp#1 |
În sistemele de operare Microsoft moderne de pe platforma NT , următoarele variabile sunt utilizate pentru a obține informații despre sistem [1] ( textul îngroșat se referă la versiunile sistemelor de operare Windows care încep cu Vista (Vista/7/8/8.1/10) ) :
Nume | Tip de | Descriere |
---|---|---|
ALLUSERSPROFILE | local | Returnează locația profilului „Toți utilizatorii”. Pe Windows 7, returnează calea către folderul C:\ProgramData\ . |
DATELE APLICATIEI | sistemică | Returnează locația implicită pentru datele aplicației. Pe Windows XP, acesta este C:\Documents and Settings\%UserName%\Application Data. Pe Windows 7 - C:\Users\%UserName%\AppData\Roaming . |
CD | local | Specifică calea către directorul curent. Identic cu comanda CD, fără argumente. |
NUMELE CLIENTULUI | dinamica locala | Variabila este definită numai în mediul Remote Desktop Connection. Stochează numele computerului (%COMPUTERNAME%) al clientului de acces la distanță. |
CMDCMDLINE | local | Comanda exactă folosită pentru a rula cmd.exe curent. |
CMDEXTVERSION | sistemică | Versiunea actualelor extensii ale procesorului de comandă. |
PROGRAMFIILE COMUNE | sistemică | Locația directorului „Common Files” (de obicei %ProgramFiles%\Common Files). |
COMMONPROGRAMFILES(x86) | sistemică | Locația directorului „Common Files” în Program Files (x86) pentru un sistem de operare pe 64 de biți (de obicei %ProgramFiles(x86)%\Common Files) . |
NUMELE CALCULATORULUI | sistemică | Numele calculatorului |
COMSPEC | sistemică | Calea către fișierul executabil shell. |
DATA | sistemică | Returnează data curentă. Utilizează același format ca și comanda date /t. Creat de comanda Cmd.exe. |
EROARELEVEL | sistemică | Returnează codul de eroare al ultimei comenzi utilizate. O valoare diferită de zero indică de obicei o eroare. |
HOMEDRIVE | sistemică | Returnează numele unității stației de lucru locale asociate cu directorul principal al utilizatorului. Setați pe baza locației directorului principal. Directorul principal al utilizatorului este specificat în snap-in-ul Utilizatori și grupuri locale. |
HOMEPATH | sistemică | Returnează calea completă către directorul principal al utilizatorului. Setați pe baza locației directorului principal. Directorul principal al utilizatorului este specificat în snap-in-ul Utilizatori și grupuri locale. |
HOMESHARE | sistemică | Returnează calea de rețea către directorul principal partajat al utilizatorului . Setați pe baza locației directorului principal. Directorul principal al utilizatorului este specificat în snap-in-ul Utilizatori și grupuri locale. |
LOCALAPPDATA | sistemică | Returnează locația locală implicită pentru datele aplicației (C:\Users\%UserName%\AppData\Local) . |
LOGONSERVER | local | Numele controlerului de domeniu care a fost folosit pentru a autoriza utilizatorul curent. |
NUMBER_OF_PROCESORI | sistemică | Numărul de procesoare din sistem (de fapt, numărul de nuclee). |
OS | sistemică | Numele sistemului de operare. Windows XP și Windows 2000 apar ca Windows_NT. |
CALE | sistemică | Specifică calea de căutare pentru fișierele executabile. |
PATHEXT | sistemică | Returnează o listă de extensii de fișiere care sunt considerate executabile de sistemul de operare. |
PROCESSOR_ARHITECTURE | sistemică | arhitectura procesorului. Opțiuni posibile: x86 , IA64 , AMD64 . |
PROCESSOR_IDENTIFIER | sistemică | Descrierea procesorului (ortografia eronată a lui PROCESSOR_IDENTFIER este adesea găsită pe Internet - lipsește o literă). |
PROCESSOR_LEVEL | sistemică | Numărul modelului procesorului. |
PROCESSOR_REVISION | sistemică | Revizuirea procesorului. |
PROGRAMDATE | sistemică | Returnează calea către directorul C:\ProgramData\ (similar cu ALLUSERSPROFILE) . |
PROGRAMFIILE | sistemică | Calea către directorul Fișiere program . |
PROGRAMFILES(x86) | sistemică | Calea către directorul Fișiere de program (x86) pe sistemele pe 64 de biți pentru aplicații cu arhitectură x86. |
PROMPT | local | Returnează opțiunile liniei de comandă pentru interpretul curent. Creat de comanda Cmd.exe. |
PUBLIC | sistemică | Pe Windows 7, returnează calea către directorul C:\Users\Public . |
ALEATORIU | sistemică | Număr zecimal aleatoriu de la 0 la 32767. Generat de Cmd.exe. |
SAFEBOOT_OPTION | sistemică | Există doar în modul sigur . Acesta ia valoarea tipului de mod sigur în care rulează sistemul. În modul sigur și modul sigur cu suport pentru linia de comandă , este setat la MINIMAL. În modul sigur cu suport pentru driver de rețea , este setat la Rețea. |
SESSIONNAME | local | Stochează numele sesiunii de utilizator activ. Setați la „Consola” pentru autentificare locală, RDP-Tcp#<număr de sesiune> pentru acces de la distanță |
SYSTEMDRIVE | sistemică | Unitatea în care se află directorul rădăcină Windows. |
SYSTEMROOT | sistemică | Calea către directorul rădăcină Windows. |
TEMP și TMP | sistem și local | Obține directoarele temporare implicite utilizate de aplicațiile care sunt disponibile pentru utilizatorii conectați. Unele aplicații necesită variabila TEMP, altele necesită variabila TMP. Potenţial, TEMP şi TMP pot indica directoare diferite, dar de obicei sunt aceleaşi. |
TIMP | sistemică | Returnează ora curentă. Utilizează același format ca și comanda time /t. Creat de comanda Cmd.exe. Pentru mai multe informații despre comanda time, consultați Ora. |
DOMENIU DE UTILIZATOR | local | Numele domeniului căruia îi aparține utilizatorul curent. |
NUME DE UTILIZATOR | local | Numele utilizatorului curent. |
PROFIL UTILIZATOR | local | Calea către profilul utilizatorului curent. |
WINDIR | sistemică | Directorul în care este instalat Windows. |
Pentru a accesa valoarea unei variabile, trebuie să puneți un semn % înainte și după numele acesteia, de exemplu:
ecou %PROCESSOR_ARCHITECTURE%Pentru a seta valoarea unei variabile:
SET TEMP=C:\TEMPDe asemenea, puteți lucra cu variabilele de mediu făcând clic pe butonul „Variabile de mediu” din fila „Avansat” din caseta de dialog „Proprietăți sistem” (meniul contextual al pictogramei „Computerul meu” → elementul „Proprietăți”).
De asemenea, trebuie să rețineți că, spre deosebire de sistemele UNIX, în DOS și în linia de comandă standard Windows, variabilele de mediu nu sunt moștenite de procesele care sunt pornite, ci sunt partajate. Acest lucru permite, de exemplu, returnarea rezultatelor programelor prin intermediul acestora, dar, pe de altă parte, creează posibilitatea de deteriorare sau depășire. Overflow este relevant în special pentru variabila PATH, deoarece este adesea completată atunci când rulează diferite scripturi. Când are loc o astfel de depășire, este suficientă pur și simplu repornirea interpretului de linie de comandă. Interpreții portați din sisteme UNIX (de ex. Z-shell) nu sunt afectați de această problemă.
Puteți obține valoarea unei variabile în cod folosind metoda ExpandEnvironmentStrings a obiectului COM WScript.Shell:
WScriptShell = ObjCreate("WScript.Shell") UserName = WScriptShell.ExpandEnvironmentStrings("%USERNAME%")Trebuie remarcat faptul că setul de valori ale variabilelor de mediu este obținut de proces în momentul pornirii acestuia, toate procesele slave pe care le pornește primesc valorile variabilelor din acest set, dacă al doilea proces (independent de primul ) modifică valoarea variabilei de mediu sau creează o nouă variabilă, aceste modificări nu vor fi disponibile pentru primul proces.
Valorile variabilelor de mediu LOGONSERVER, CLIENTNAME, SESSIONNAME, APPDATA, HOMEDRIVE, HOMEPATH sunt setate atunci când o sesiune este deschisă pe baza valorilor din cheia de registry [HKEY_CURRENT_USER\Volatile Environment].
Valorile variabilelor globale de mediu precum PATH, TEMP etc. sunt stocate în ramura de registry [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment].
Este foarte comun să înțelegeți greșit cuvântul „mediu” în sintagma „variabile de mediu”. Neînțelegerea apare din citirea cuvântului „mediu” cu accent greșit pe prima silabă, ceea ce duce la recunoașterea acestui cuvânt ca formă a pluralului nominativ al cuvântului „mediu” (mediu). Corect este înțelegerea cuvântului „mediu” ca formă a genitivului singular al cuvântului „mediu” și pronunția cu accent pe a doua silabă.
Astfel, este incorect să spunem, de exemplu, „cu variabile de mediu” („cu variabile de mediu”), dar este corect să spunem „cu variabile de mediu” („cu variabile de mediu”).