Variabilă de mediu - Environment variable

O variabilă de mediu este o valoare denumită dinamic care poate afecta modul în care procesele de rulare se vor comporta pe un computer. Acestea fac parte din mediul în care rulează un proces. De exemplu, un proces care rulează poate interoga valoarea variabilei de mediu TEMP pentru a descoperi o locație adecvată pentru a stoca fișiere temporare sau variabila HOME sau USERPROFILE pentru a găsi structura directorului deținută de utilizatorul care rulează procesul.

Au fost introduse în forma lor modernă în 1979 cu versiunea 7 Unix , deci sunt incluse în toate versiunile și variantele sistemului de operare Unix de la acel moment, inclusiv Linux și macOS . De la PC DOS 2.0 în 1982, toate sistemele de operare Microsoft succesive , inclusiv Microsoft Windows și OS / 2 le-au inclus și ca o caracteristică, deși cu sintaxă, utilizare și nume de variabile standard diferite.

Proiecta

În toate sistemele Unix și Unix , precum și pe Windows, fiecare proces are propriul set separat de variabile de mediu . În mod implicit, atunci când se creează un proces, acesta moștenește un mediu de execuție duplicat al procesului său părinte, cu excepția modificărilor explicite făcute de părinte atunci când creează copilul. La nivel API , aceste modificări trebuie făcute între rularea forkși exec. Alternativ, din shell-uri de comandă, cum ar fi bash , un utilizator poate schimba variabilele de mediu pentru o anumită invocare a comenzii invocând-o indirect prin envsau utilizând ENVIRONMENT_VARIABLE=VALUE <command>notația. Un program care rulează poate accesa valorile variabilelor de mediu în scopul configurării.

Scripturile Shell și fișierele batch utilizează variabile de mediu pentru a comunica datele și preferințele proceselor copil . Ele pot fi, de asemenea, utilizate pentru a stoca valori temporare pentru referință ulterior într-un script shell. Cu toate acestea, în Unix, variabilele neexportate sunt preferate pentru acest lucru, deoarece nu se scurg în afara procesului.

În Unix, o variabilă de mediu modificată într-un script sau un program compilat va afecta doar acel proces și, eventual, procesele copil. Procesul părinte și orice proces nelegat nu vor fi afectate. În mod similar, modificarea sau eliminarea valorii unei variabile într-un fișier batch DOS va schimba variabila pe durata COMMAND.COMexistenței.

În Unix, variabilele de mediu sunt în mod normal , inițializată în timpul pornirii sistemului de către sistemul de inițializare de script - uri de pornire , și , prin urmare , moștenite de toate celelalte procese din sistem. Utilizatorii le pot, și deseori, să le mărească în scriptul de profil pentru shell-ul de comandă pe care îl utilizează. În Microsoft Windows, valoarea implicită a fiecărei variabile de mediu este stocată în registrul Windows sau setată în AUTOEXEC.BATfișier.

Pe Unix , unui program setuid i se oferă un mediu ales de apelantul său, dar rulează cu autoritate diferită față de apelantul său. Linker dinamic se va încărca , de obicei , codul din locațiile specificate de variabilele de mediu $LD_LIBRARY_PATHși $LD_PRELOADși rulați - l cu autoritate procesul lui. Dacă un program setuid ar face acest lucru, ar fi nesigur, deoarece apelantul său ar putea să-l facă să ruleze cod arbitrar și, prin urmare, să-și folosească în mod abuziv autoritatea. Din acest motiv, libc anulează aceste variabile de mediu la pornire într-un proces setuid. programele setuid dezactivează de obicei variabile de mediu necunoscute și verifică altele sau le setează la valori rezonabile.

În general, colecția de variabile de mediu funcționează ca o matrice asociativă în care atât cheile, cât și valorile sunt șiruri. Interpretarea caracterelor din ambele șiruri diferă între sisteme. Atunci când structurile de date, cum ar fi listele, trebuie să fie reprezentate, este obișnuit să se utilizeze o listă de două puncte (comună pe Unix și Unix-like) sau delimitată de punct și virgulă (comună pe Windows și DOS).

Sintaxă

Variabilele pot fi utilizate atât în ​​scripturi, cât și pe linia de comandă . De obicei, acestea sunt menționate prin plasarea simbolurilor speciale în fața sau în jurul numelui variabilei.

Este convențional ca numele variabilelor de mediu să fie alese în majuscule. În general, în programarea codului, acest lucru ajută la distingerea variabilelor de mediu de alte tipuri de nume din cod. Pe sistemele de operare de tip Unix, numele variabilelor de mediu sunt sensibile la majuscule, dar nu sunt pe DOS, OS / 2 și Windows.

Unix

În majoritatea shell-urilor de linie de comandă Unix și Unix , valoarea unei variabile de mediu este recuperată prin plasarea unui $semn înaintea numelui variabilei. Dacă este necesar, numele poate fi, de asemenea, înconjurat de aparate dentare.

Pentru a afișa directorul principal al utilizatorului, utilizatorul poate tasta:

echo $HOME

Dacă xyztrebuie adăugat la valoarea HOMEvariabilei, s-ar putea să tastați:

echo ${HOME}xyz

În sistemele Unix și Unix, numele variabilelor de mediu sunt sensibile la majuscule și minuscule.

Comanda envafișează toate variabilele de mediu și valorile acestora. Comanda printenvpoate fi, de asemenea, utilizată pentru a imprima o singură variabilă dând numele variabilei ca singurul argument pentru comandă.

DOS, OS / 2 și Windows

În interpretorii de linie de comandă DOS, OS / 2 și Windows, cum ar fi COMMAND.COMși cmd.exe, o variabilă de mediu este recuperată prin plasarea unui %semn înainte și după aceasta.

Variabila de mediu numită HOMEDRIVEconține litera unității (plus :colonul său final ) din directorul principal al utilizatorului, în timp ce HOMEPATHconține calea completă a directorului principal al utilizatorului din acea unitate.

Deci, pentru a vedea unitatea de acasă și calea, utilizatorul poate tasta acest lucru:

echo %homedrive%%homepath%

În interpretorii de linie de comandă DOS, OS / 2 și Windows, majusculele sau minusculele nu se disting pentru numele variabilelor de mediu.

Comanda set(fără argumente) afișează toate variabilele de mediu și valorile acestora. setpoate fi, de asemenea, utilizat pentru a imprima toate variabilele al căror nume începe cu un prefix dat, oferind prefixul ca singur argument pentru comandă.

În Windows PowerShell , utilizatorul poate tasta acest lucru:

echo $env:homedrive$env:homepath

sau, folosind numele de comandă nativ al PowerShell echivalent cu echo:

Write-Output $env:homedrive$env:homepath

În PowerShell, majusculele sau minusculele nu se disting pentru numele variabilelor de mediu.

Următoarea comandă afișează toate variabilele de mediu și valorile acestora:

get-childitem env:

Atribuire: Unix

Comenzile envși setpot fi utilizate pentru a seta variabile de mediu și sunt adesea încorporate direct în shell.

Următoarele comenzi pot fi de asemenea utilizate, dar sunt adesea dependente de un anumit shell.

VARIABLE=value         #
export VARIABLE        # for Bourne and related shells
export VARIABLE=value  # for ksh, bash, and related shells
setenv VARIABLE value  # for csh and related shells

Câteva principii simple guvernează modul în care variabilele de mediu își ating efectul.

Variabilele de mediu sunt locale pentru procesul în care au fost setate. Dacă sunt generate două procese shell și valoarea unei variabile de mediu este modificată într-una, această modificare nu va fi văzută de cealaltă.

Când se creează un proces copil, acesta moștenește toate variabilele de mediu și valorile acestora din procesul părinte. De obicei, atunci când un program apelează un alt program, acesta creează mai întâi un proces copil prin bifurcare , apoi copilul ajustează mediul după cum este necesar și, în cele din urmă, copilul se înlocuiește cu programul care va fi apelat. Această procedură oferă programului apelant controlul asupra mediului programului apelat.

În shell-urile Unix, variabilele pot fi atribuite fără exportcuvântul cheie. Variabilele definite în acest fel sunt afișate de setcomandă, dar nu sunt variabile de mediu adevărate, deoarece sunt stocate numai de către shell și sunt necunoscute pentru toate celelalte procese. printenvComanda nu le va afișa, iar procesele copil nu le moștenesc.

VARIABLE=value

Sintaxa prefixului exportă o variabilă de mediu „adevărată” către un proces copil fără a afecta procesul curent:

VARIABLE=value program_name [arguments]

Persistența unei variabile de mediu poate fi la nivel de sesiune sau la nivel de sistem.

unseteste o comanda builtin implementată de atât Bourne shell familie ( sh, ksh, bashetc.) și C shell familie (csh, tcsh, etc.) de Unix shell linia de comandă . Se dezactivează o variabilă de shell, eliminând-o din memorie și din mediul exportat al shell-ului. Este implementat ca un shell integrat , deoarece manipulează direct internele shell-ului. Variabilele shell de numai citire nu pot fi anulate. Dacă se încearcă dezactivarea unei variabile de numai citire, unsetcomanda va imprima un mesaj de eroare și va returna un cod de ieșire diferit de zero.

Atribuire: DOS, OS / 2 și Windows

În interpretorii de linie de comandă DOS, OS / 2 și Windows, cum ar fi COMMAND.COMși cmd.exe, SETcomanda este utilizată pentru a atribui variabile de mediu și valori utilizând următoarele argumente:

SET VARIABLE=value

setDe comandă , fără nici un argument afișează toate variabilele de mediu , împreună cu valorile lor. În cmd.exe, este posibil să atribuiți variabile locale care nu scurg în exterior folosind SETLOCALcomanda.

În PowerShell , atribuirea urmează o sintaxă similară cu Unix:

$env:VARIABLE = "VALUE"

Exemple

Exemple de variabile de mediu includ:

  • PATH: o listă de căi de directoare. Când utilizatorul tastează o comandă fără a furniza calea completă, această listă este verificată pentru a vedea dacă conține o cale care duce la comandă.
  • HOME( Unix-like ) și USERPROFILE(Microsoft Windows): indicați unde se află directorul principal al unui utilizator în sistemul de fișiere .
  • HOME/{.AppName}( Unix-like ) și APPDATA\{DeveloperName\AppName}(Microsoft Windows): pentru stocarea setărilor aplicației. Multe aplicații folosesc în mod incorect USERPROFILEpentru setările aplicației în Windows: USERPROFILEar trebui utilizate numai în casete de dialog care permit utilizatorului să aleagă între căi precum Documents/Pictures/Downloads/Music; în scopuri programatice APPDATA((pentru setările aplicației în roaming partajate pe mai multe dispozitive), LOCALAPPDATA(pentru setările aplicației locale) sau PROGRAMDATA(pentru setările aplicației partajate între mai mulți utilizatori ai sistemului de operare) ar trebui utilizate.
  • TERM( Unix-like ): specifică tipul de terminal al computerului sau de emulator de terminal utilizat (de exemplu, vt100sau dumb).
  • PS1( Unix-like ): specifică modul în care promptul este afișat în shell-ul Bourne și variante.
  • MAIL( Unix-like ): folosit pentru a indica unde se găsește mailul unui utilizator.
  • TEMP: locație în care procesele pot stoca fișiere temporare.

Variabile de mediu adevărate

Unix

$PATH
Conține o listă de directoare separate de două puncte, care shell-ul caută comenzi care nu conțin o bară în numele lor (comenzile cu bare sunt interpretate ca nume de fișiere de executat și shell-ul încearcă să execute fișierele direct). Este echivalent cu variabila DOS , OS / 2 și Windows %PATH% .
$HOME
Conține locația directorului principal al utilizatorului . Deși directorul principal al utilizatorului curent poate fi găsit și prin funcțiile C getpwuidși getuid, $HOMEeste adesea folosit pentru comoditate în diverse scripturi shell (și în alte contexte). Utilizarea variabilei de mediu oferă, de asemenea, utilizatorului posibilitatea de a indica un alt director.
$PWD
Această variabilă indică directorul curent. Echivalent cu ieșirea comenzii pwd când este apelat fără argumente.
$DISPLAY
Conține identificatorul pentru afișajul pe care programele X11 ar trebui să îl folosească în mod implicit.
$LD_LIBRARY_PATH
Pe multe sisteme Unix cu un linker dinamic , conține o listă separată de două puncte a directoarelor pe care linker-ul dinamic ar trebui să le caute obiecte partajate atunci când construiește o imagine de proces după exec, înainte de a căuta în alte directoare.
$LIBPATH sau $SHLIB_PATH
Alternative la cele $LD_LIBRARY_PATHutilizate în mod obișnuit pe versiunile mai vechi Unix.
$LANG, $LC_ALL, $LC_...
$LANGeste folosit pentru a seta la setările locale implicite . De exemplu, dacă valorile locale sunt pt_BR, atunci limba este setată la portugheza (braziliană), iar practica braziliană este utilizată acolo unde este relevant. Diferite aspecte ale localizare sunt controlate de către individuale $LC_-variables ( $LC_CTYPE, , etc.). poate fi folosit pentru a forța aceeași locație pentru toate aspectele.$LC_COLLATE$LC_DATE$LC_ALL
$TZ
Se referă la fusul orar . Poate fi în mai multe formate, fie specificând fusul orar în sine, fie făcând referire la un fișier (în /usr/share/zoneinfo).
$BROWSER
Conține o listă separată de două puncte a preferințelor browserului web al unui utilizator , pentru utilizare de către programele care trebuie să permită utilizatorului să vizualizeze conținut la o adresă URL . Browserele din listă sunt destinate a fi încercate de la primul la ultim, oprindu-se după primul care reușește. Acest aranjament permite un comportament alternativ în diferite medii, de exemplu, într-un mediu X11 , poate fi utilizat un browser grafic (cum ar fi Firefox ), dar într-un mediu de consolă poate fi utilizat un browser bazat pe terminal (cum ar fi un Lynx ). Un %stoken poate fi prezent pentru a specifica unde ar trebui plasată adresa URL; în caz contrar, browserul ar trebui să fie lansat cu adresa URL ca prim argument.


DOS

Sub DOS, mediul master este furnizat de procesorul de comandă primar, care moștenește mediul pre- definit în CONFIG.SYSprima încărcare. Dimensiunea sa poate fi configurată prin COMMAND /E:nparametrul cuprins între 160 și 32767 octeți. Segmentele de mediu local moștenite proceselor copil sunt de obicei reduse la dimensiunea conținutului pe care îl dețin. Unele procesoare de linie de comandă (cum ar fi 4DOS ) permit definirea unei cantități minime de spațiu liber de mediu care va fi disponibil la lansarea shell-urilor secundare. În timp ce conținutul variabilelor de mediu rămâne neschimbat la stocare, numele lor (fără „ %”) sunt întotdeauna convertite în majuscule, cu excepția variabilelor pre-mediu definite prin CONFIG.SYSdirectivă SETîn DR DOS 6.0 și mai mare (și numai cu SWITCHES=/L(pentru „ permite denumirea cu litere mici ") sub DR-DOS 7.02 și versiuni ulterioare). În principiu, MS-DOS 7.0 și versiunile ulterioare acceptă, de asemenea, numele variabilelor mici ( %windir%), dar nu oferă utilizatorului mijloace pentru a le defini. Numele variabilelor de mediu care conțin litere mici sunt stocate în mediu la fel ca variabilele de mediu normale, dar rămân invizibile pentru majoritatea software-ului DOS, deoarece sunt scrise pentru a aștepta doar variabile majuscule. Unele procesoare de comandă limitează lungimea maximă a unui nume de variabilă la 80 de caractere. În timp ce în principal este limitat doar de dimensiunea segmentului de mediu , unele programe DOS și Windows pe 16 biți nu se așteaptă ca conținutul variabilelor de mediu să depășească 128 de caractere. DR-DOS COMMAND.COMacceptă variabile de mediu de până la 255, 4DOS chiar și până la 512 caractere. Deoarece COMMAND.COMpoate fi configurat (prin /L:128..1024) pentru a suporta linii de comandă de până la 1024 de caractere intern sub MS-DOS 7.0 și mai mare, variabilele de mediu ar trebui să conțină cel puțin 1024 de caractere. În unele versiuni ale DR-DOS, mediul transmis către drivere, care de multe ori nu au nevoie de mediul lor după instalare, poate fi micșorat sau mutat prin SETENVsau INSTALL[HIGH]/ LOADHIGHopțiuni /Z(mediu zero), (unitate de substituție, de exemplu ) și (relocați mediul deasupra programului ) pentru a minimiza amprenta de memorie rezidentă rezultată efectiv de șofer. /D[:loaddrive]B:TSR.COM/E

În modul batch, variabilele de mediu inexistente sunt înlocuite cu un șir de lungime zero.

Variabilele de mediu standard sau variabilele de mediu rezervate includ:

%APPEND% (acceptat de la DOS 3.3)
Această variabilă conține o listă delimitată de punct și virgulă de directoare în care să căutați fișiere. De obicei, este modificat prin intermediul APPEND /Ecomenzii, care asigură, de asemenea, că numele directorului sunt convertite în majuscule. Unele programe DOS se așteaptă de fapt ca numele să fie stocate cu majuscule, iar lungimea listei să nu depășească 121 de caractere, prin urmare variabila este cel mai bine să nu fie modificată prin SETcomandă. Numele de fișiere lungi care conțin spații sau alte caractere speciale nu trebuie citate ( ").
%CONFIG%(acceptat de la MS-DOS 6.0 și PC DOS 6.1 , acceptat și de ROM-DOS )
Această variabilă deține numele simbolic al configurației de boot alese în prezent. Este setat de BIOS-ul DOS ( IO.SYS, IBMBIO.COMetc.) la numele definit de CONFIG.SYSdirectiva corespunzătoare MENUITEMînainte de a lansa procesorul de comandă principal. Scopul său principal este de a permite alte cazuri speciale în AUTOEXEC.BATși loturi similare, în funcție de opțiunea selectată la momentul pornirii. Acest lucru poate fi emulat în conformitate cu DR-DOS prin utilizarea CONFIG.SYSdirectivei SETca SET CONFIG=1.
%CMDLINE%(introdus cu 4DOS , acceptat și de la MS-DOS 7.0 )
Această variabilă conține textul complet extins al liniei de comandă în curs de executare. Poate fi citit de aplicații pentru a detecta utilizarea și prelua linii de comandă lungi, deoarece metoda tradițională de a prelua argumentele liniei de comandă prin PSP (sau funcțiile API asociate ) este limitată la 126 de caractere și nu mai este disponibilă când FCB - urile sunt extinse sau se folosește DTA implicit . În timp ce 4DOS acceptă linii de comandă mai lungi, COMMAND.COMtotuși acceptă în mod implicit maximum 126 de caractere la prompt (cu excepția cazului în care este suprascris /U:128..255pentru a specifica dimensiunea bufferului de linie de comandă), dar totuși liniile de comandă interne pot deveni mai lungi prin extinderea variabilei fe (în funcție de /L:128..1024pentru a specifica dimensiunea bufferului intern). În plus față de octetul lungimii liniei de comandă din PSP, linia de comandă PSP este limitată în mod normal de ASCII-13 , iar liniile de comandă mai lungi de 126 de caractere vor fi de obicei tăiate prin introducerea unui ASCII-13 în poziția 127, dar acest lucru nu poate fi să se bazeze pe toate scenariile. Variabila va fi suprimată pentru comenzile externe invocate cu un @simbol precedent ca în @XCOPY ...pentru compatibilitate inversă și pentru a minimiza dimensiunea mediului la încărcarea TSR -urilor care nu se mută . Unele versiuni beta ale Windows Chicago obișnuiau %CMDLINE%să stocheze doar restul liniei de comandă care depășea 126 de caractere în loc de linia de comandă completă.
%COMSPEC% (acceptat de la DOS 2.0)
Această variabilă conține calea completă 8.3 către procesorul de comandă , de obicei sau . Nu trebuie să conțină nume de fișiere lungi , dar în DR-DOS poate conține parole pentru fișiere și directoare. Este configurat de către procesorul de comandă primar pentru a indica spre sine (reflectând de obicei setările directivei ), astfel încât porțiunea rezidentă a procesorului de comandă să își poată reîncărca porțiunea tranzitorie de pe disc după executarea unor programe mai mari. Valoarea poate fi modificată la runtime pentru a reflecta modificările în configurație, care ar necesita procesorul de comandă să se reîncarce din alte locații. Variabila este utilizată și la lansarea shell-urilor secundare.C:\COMMAND.COMC:\DOS\COMMAND.COMCONFIG.SYSSHELL
%COPYCMD%(acceptat de la MS-DOS 6.2 și PC DOS 6.3 , acceptat și de ROM-DOS )
Permite unui utilizator pentru a specifica /Ycomutatorul (să -și asume „Da“ la interogări) ca implicit pentru COPY, XCOPYși MOVEcomenzi. O valoare implicită a /Ypoate fi anulată prin introducerea /-Ycomutatorului pe linia de comandă. /YComutatorul instruiește comanda pentru a înlocui fișierele existente fără a solicita confirmarea.
%DIRCMD%(acceptat de la MS-DOS 5.0 și PC DOS 5.0 , acceptat și de ROM-DOS )
Permite unui utilizator să specifice parametrii impliciți personalizați pentru DIRcomandă, inclusiv specificațiile fișierului. Comutatoarele implicite prestabilite pot fi anulate prin furnizarea comutatorului negativ pe linia de comandă. De exemplu, dacă %DIRCMD%conține /Wcomutatorul, atunci acesta poate fi suprascris prin utilizarea DIR /-Wla linia de comandă. Acest lucru este similar cu variabila de mediu %$DIR%din DOS Plus și o facilitate pentru a defini comutatoarele implicite DIRprin intermediul acestuia /Csau /Rcomutatoarele din DR-DOS COMMAND.COM . %DIRCMD%este, de asemenea, acceptat de comenzile externe SDIR.COM/ DIR.COM Stacker sub Novell DOS 7 și versiuni ulterioare.
%LANG%(acceptat de la MS-DOS 7.0 )
Această variabilă este acceptată de unele instrumente pentru a comuta localizarea pentru mesaje în probleme multilingve.
%LANGSPEC%(acceptat de la MS-DOS 7.0 )
Această variabilă este acceptată de unele instrumente pentru a comuta localizarea pentru mesaje în probleme multilingve.
%NO_SEP%(acceptat de la PC DOS 6.3 și DR-DOS 7.07 )
Această variabilă controlează afișarea separatorilor de mii în mesaje de diferite comenzi. Emise în mod implicit, pot fi suprimate prin specificarea SET NO_SEP=ONsau SET NO_SEP=1sub PC DOS. DR-DOS permite în plus să suprascrie separatorul de mii al sistemului afișat ca în fe SET NO_SEP=..
%PATH% (acceptat de la DOS 2.0)
Această variabilă conține o listă de directoare delimitate de punct și virgulă în care interpretul de comandă va căuta fișiere executabile . Echivalent cu $PATHvariabila Unix (dar unele aplicații DOS și Windows folosesc, de asemenea, lista pentru a căuta fișiere de date similare cu $LD_LIBRARY_PATHsistemele similare Unix). De obicei, este modificat prin comanda PATH(sau PATH /Esub MS-DOS 6.0 ), care asigură, de asemenea, că numele directorului sunt convertite în majuscule. Unele programe DOS așteaptă de fapt ca numele să fie stocate cu majuscule, iar lungimea listei să nu depășească 123 de caractere, de aceea variabila nu ar trebui mai bine modificată prin intermediul SETcomenzii. Numele de fișiere lungi care conțin spații sau alte caractere speciale nu trebuie citate ( "). În mod implicit, directorul curent este căutat mai întâi, dar unele procesoare de linie de comandă, cum ar fi 4DOS, permit ca " ." (pentru "directorul curent") să fie inclus și în listă pentru a suprascrie această ordine de căutare; unele programe DOS sunt incompatibile cu această extensie.
%PROMPT% (acceptat de la DOS 2.0)
Această variabilă conține un $șir -tokenizat care definește afișarea promptului . De obicei se modifică prin PROMPTcomandă.
%TEMP%(și %TMP%)
Aceste variabile conțin calea către directorul în care ar trebui stocate fișierele temporare . Instrumentele sistemului de operare folosesc de obicei numai %TEMP%, în timp ce programele terțe sunt utilizate %TMP%. De obicei %TEMP%are prioritate %TMP%.

Familia DR-DOS acceptă o serie de variabile de mediu standard suplimentare , inclusiv:

%BETA%
Această variabilă conține un mesaj opțional afișat de unele versiuni (inclusiv DR DOS 3.41 ) de COMMAND.COMla pornirea shell-urilor secundare.
%DRDOSCFG%/ %NWDOSCFG%/%OPENDOSCFG%
Această variabilă conține directorul (fără trailing " \„) , în cazul în care pentru a căuta .INIși .CFGfișierele de configurare (care este, DR-DOS fișiere aplicație specifice cum ar fi TASKMGR.INI, TASKMAX.INI, VIEWMAX.INI, FASTBACK.CFGetc, fișiere de clasă specifice cum ar fi COLORS.INI, sau fișiere globale , cum ar fi DRDOS.INI, NWDOS.INI, OPENDOS.INI, sau DOS.INI), așa cum este utilizat de către INSTALLși SETUPcomenzile și diverse programe DR-DOS , cum ar fi DISKOPT, DOSBOOK, EDIT, FBX, FILELINK, LOCK, SECURITY.OVL/ NWLOGIN.EXE, SERNO, TASKMAX, TASKMGR, VIEWMAX, sau UNDELETE. Nu trebuie să conțină nume de fișiere lungi .
%DRCOMSPEC%
Această variabilă deține opțional o cale alternativă la procesorul de comenzi care are prioritate față de calea definită în %COMSPEC%variabilă, incluzând opțional parole de fișiere și de directoare. Alternativ, poate deține o valoare specială de " ON" sau " 1" pentru a impune utilizarea %COMSPEC%variabilei chiar și în scenarii în care %COMSPEC%variabila poate indica un procesor de linie de comandă greșit, de exemplu, atunci când rulează unele versiuni ale DR- SYSComanda DOS sub un sistem de operare străin.
%DRSYS%
Setarea acestei variabile la „ ON” sau „ 1” va forța unele versiuni ale SYScomenzii DR-DOS să funcționeze în sisteme de operare străine în loc să afișeze un avertisment.
%FBP_USER%
Specifică numele de utilizator utilizat de comanda FastBackFBX și fișierele de configurare din Novell DOS 7 .{user}.FB
%HOMEDIR%
Această variabilă poate conține directorul principal sub DR-DOS (inclusiv DR DOS 5.0 și 6.0 ).
%INFO%
În unele versiuni ale DR-DOS, COMMAND.COMaceastă variabilă definește șirul afișat de $Isimbolul PROMPTcomenzii. Poate fi folosit, de exemplu, pentru a informa utilizatorul cum să părăsească shell-urile secundare.
%LOGINNAME%
În unele versiuni ale DR-DOS, COMMAND.COMaceastă variabilă definește numele de utilizator afișat de $Usimbolul PROMPTcomenzii, așa cum este configurat de scripturile de autentificare fe pentru Novell NetWare . Vezi și pseudo-variabila numită în mod similar %LOGIN_NAME%.
%MDOS_EXEC%
Această variabilă poate lua valorile " ON" sau " OFF" în Multiuser DOS . Dacă este activat, sistemul de operare permite aplicațiilor să se desfășoare pe shell-uri secundare cu zona de program DOS (DPA) eliberată pentru a avea memoria maximă DOS disponibilă pentru aplicațiile secundare în loc să le ruleze în același domeniu ca în DOS.
%NOCHAR%
Această variabilă poate fi utilizată pentru a defini caracterul afișat de unele comenzi în mesaje pentru „Nu” în [Y,N]interogări, suprasolicitând implicit sistemul curent (de obicei „ N„ în versiunile engleze ale DR-DOS). Dacă conține un șir, va fi luat doar primul caracter, cu majuscule. Unele comenzi acceptă, de asemenea, un parametru de linie de comandă /Ypentru a presupune automat „Da” la interogări, suprimând astfel astfel de solicitări. Dacă, totuși, parametrul /Y:yneste utilizat pentru a specifica caracterele „Da” / „Nu” (înlocuind astfel orice %NOCHAR%setare), interogările nu sunt suprimate. A se vedea, de asemenea, CONFIG.SYSdirectiva aferentă NOCHARși variabila de mediu %YESCHAR%.
%NOSOUND%
Setarea acestei variabile la „ ON” sau „ 1„ va dezactiva bipurile implicite emise de unele comenzi DR-DOS în anumite situații, cum ar fi pentru a informa utilizatorul despre finalizarea unor operații, că interacțiunea cu utilizatorul este necesară sau când a fost apăsată o tastă greșită. Opțiunile din linia de comandă pentru a activa în mod specific anumite bipuri vor suprascrie această setare.
%OS%
Această variabilă conține numele sistemului de operare pentru a face distincția între diferite sisteme de operare legate de DOS ale Digital Research -origin în joburi și aplicații batch. Valorile cunoscute includ „ DOSPLUS” ( DOS Plus 1.2 în emulare DOS), „ CPCDOS 4.1„ (DOS Plus 1.2 în emulare CP / M ), „ DRDOS„ ( DR DOS 3.31 - 6.0 , DR DOS Panther , DR DOS StarTrek , DR-DOS 7.02 - 7.05 ), " EZDOS" ( EZ-DOS 3.41 ), " PALMDOS" și " NetWare PalmDOS" ( PalmDOS 1.0 ), " NWDOS" ( Novell DOS 7 ), " NWDOS7" (Novell DOS 7 Beta), " OPENDOS" ( Caldera OpenDOS 7.01 , Caldera DR-OpenDOS 7.02 ), " CDOS" ( Concurrent DOS , Concurrent DOS XM ), " CPCDOS" ( Concurrent PC DOS ), " CDOS386" ( Concurrent DOS 386 ), " DRMDOS" ( DR Multiuser DOS ), " MDOS" ( CCI Multiuser DOS ), " IMSMDOS" ( IMS Multiuser DOS ), " REAL32" ( REAL / 32 ). MS-DOS INTERSVRcaută și o valoare de „ DRDOS”. A se vedea, de asemenea, variabila de mediu cu nume identic %OS%introdusă ulterior în familia Windows NT .
%PEXEC%
În unele versiuni ale DR-DOS, această variabilă definește comanda executată de $Xsimbolul PROMPTcomenzii înainte de a COMMAND.COMafișa promptul după revenirea de la executarea programului extern.
%SWITCHAR%
Această variabilă definește SwitChar pentru a fi folosit pentru analizarea argumentelor de către unele comenzi DR-DOS. Dacă este definit, acesta suprascrie setarea curentă a sistemului SwitChar. Singurele caractere acceptate sunt „ /” (stil DOS), „ -„ (stil Unix) și „ [„ (stil CP / M). Consultați, de asemenea, CONFIG.SYSdirectiva aferentă SWITCHAR(pentru a seta setarea SwitChar a sistemului) și %/% variabila de informații a sistemului în unele probleme ale DR-DOS COMMAND.COM(pentru a recupera setarea curentă pentru loturile portabile).
%TASKMGRWINDIR%
Această variabilă specifică directorul, unde se află Windows-ul care SYSTEM.INI va fi utilizat de TASKMGRmultitaskerul DR-DOS , anulând procedura implicită pentru a localiza fișierul.
%VER%
Această variabilă conține versiunea sistemului de operare pentru a face distincția între diferitele versiuni ale DR-DOS în lucrările batch și în afișarea VERcomenzii. Este, de asemenea, utilizat pentru $Vsimbolul PROMPTcomenzii și afectează valoarea returnată de variabila de informații a sistemului %OS_VERSION% . Valorile cunoscute includ „ 1.0” ( PalmDOS 1.0 ), „ 1.2„ ( DOS Plus 1.2 în emularea DOS), „ 2.0„ ( Concurent DOS 386 2.0 ), „ 3.0„ ( Concurent DOS 386 3.0 ), „ 3.31„ ( DR DOS 3.31 ), „ 3.32„ ( DR DOS 3.32 ), " 3.33" ( DR DOS 3.33 ), " 3.34" ( DR DOS 3.34 ), " 3.35" ( DR DOS 3.35 ), " 3.40" ( DR DOS 3.40 ), " 3.41" ( DR DOS 3.41 , EZ-DOS 3.41 ), " 3.41T" ( DR DOS 3.41T ), " 4.1" ( Concurrent PC DOS 4.1 ), " 5.0" ( DR DOS 5.0 , DR Multiuser DOS 5.0 ), " 5.1" ( Novell DR Multiuser DOS 5.1 ), " 6.0" ( DR Concurrent DOS XM 6.0 , DR DOS 6.0 ), " 6.2" ( DR Concurrent DOS XM 6.2 ), " 7" ( Novell DOS 7 , Caldera OpenDOS 7.01 , DR-DOS 7.02 - 7.05 ), " 7.00" ( CCI Multiuser DOS 7.00 ), " 7.07" ( DR-DOS 7.07 ), " 7.1" ( IMS Multiuser DOS 7.1 ), " 7.21" ( CCI Multiuser DOS 7.21 ), " 7.22" ( CCI Multiuser DOS 7.22 ) etc.
%YESCHAR%
Această variabilă poate fi utilizată pentru a defini caracterul afișat de unele comenzi în mesaje pentru „Da” în [Y,N]interogări, suprasolicitând implicit sistemul curent (de obicei „ Y” în versiunile în limba engleză ale DR-DOS). Dacă conține un șir, va fi luat doar primul caracter, cu majuscule. Unele comenzi acceptă, de asemenea, un parametru de linie de comandă /Ypentru a presupune automat „Da” la interogări, suprimând astfel astfel de solicitări. Dacă, totuși, parametrul /Y:yeste utilizat pentru a specifica caracterul „Da” (prin urmare suprascrie orice %YESCHAR%setare), interogările nu sunt suprimate. A se vedea, de asemenea, CONFIG.SYSdirectiva aferentă YESCHARși variabila de mediu %NOCHAR%.
%$CLS%
Această variabilă definește secvența de control care trebuie trimisă la driverul consolei pentru a șterge ecranul atunci când CLSeste emisă comanda, anulând astfel valoarea implicită internă (" ←[2J" sub DR-DOS ", ←E" sub DOS Plus 1.2 pe mașinile Amstrad, precum și sub Concurrent DOS , Multiuser DOS și REAL / 32 pentru terminalele VT52 sau " ←+" sub Multiuser DOS pentru terminalele ASCII ). Dacă variabila nu este definită și nu ANSI.SYSeste detectat niciun driver de consolă, DR-DOS COMMAND.COMva șterge direct ecranul prin funcția INT 10h/AH=00h BIOS , așa cum face MS-DOS / PC DOS COMMAND.COM. O \nnnnotare specială pentru numerele octale este acceptată pentru a permite definirea caracterelor speciale precum ESC ( ASCII-27 = "←" = 1Bh = 33o), așa cum se face în SET $CLS=\033[2J. Pentru a trimite backslash (" \") în sine, acesta poate fi dublat " \\".
%$DIR%
Suportat de DOS Plus acceptă valorile „L” (lung) sau „W” (lat) pentru a schimba aspectul implicit al listelor de directoare cu DIR . Poate fi suprascris folosind opțiunile din linia de comandă /Lsau /W. A se vedea, de asemenea, variabila de mediu similară %DIRCMD%și DIRopțiunile /Cși /Rdin DR-DOS COMMAND.COM.
%$PAGE%
Suportat de DOS Plus acceptarea valorilor " ON" sau " OFF" pentru controlul paginării. Setarea acesteia la „ ON” are același efect ca și adăugarea /Pla comenzile care o susțin (cum ar fi DIR sau TYPE ).
%$LENGTH%
Folosit de DOS Plus pentru a defini lungimea ecranului consolei în linii. Acesta este utilizat pentru a controla într-un mod portabil când ieșirea ecranului trebuie oprită temporar până când o tastă este apăsată împreună cu /Popțiunea acceptată de diferite comenzi sau cu paginarea automată. A se vedea , de asemenea , variabilele de mediu aferente %$WIDTH%și %DIRSIZE%precum și pseudo-variabile similare %_ROWS%.
%$WIDTH%
Folosit de DOS Plus pentru a defini lățimea ecranului consolei în coloane. Aceasta este utilizată pentru a controla într-un mod portabil formatarea ieșirii pe ecran a comenzilor precum DIR /Wsau TYPE filename. A se vedea , de asemenea , variabilele de mediu aferente %$LENGTH%și %DIRSIZE%precum și pseudo-variabile similare %_COLUMNS%.
%$SLICE%
Folosit de DOS Plus acceptând o valoare numerică pentru a controla tranșarea timpului de prim-plan / fundal al programelor multitasking. Vezi și comanda DOS Plus SLICE.
%$ON%
Această variabilă poate conține o secvență de control opțională pentru a activa activarea, inversarea sau colorarea textului. Este folosit pentru a sublinia sau controla în alt mod afișarea numelor de fișiere în comenzi precum TYPE wildcard, de exemplu, SET $ON=\033[1mcu ANSI.SYS încărcat sau SET $ON=\016pentru o imprimantă IBM sau ESC / P. Pentru \nnnnotația octală specială acceptată, consultați %$CLS%. În timp ce variabila este nedefinită în mod implicit în DOS Plus și DR-DOS, implicit DOS Multiuser pentru un terminal ASCII este egal SET $ON=\033p. A se vedea, de asemenea, variabila de mediu aferentă %$OFF%.
%$OFF%
Această variabilă poate conține o secvență de control opțională pentru a dezactiva evidențierea, inversarea sau colorarea textului. Se folosește pentru a reveni la ieșirea normală după afișarea numelor de fișiere în comenzi precum TYPE wildcard, de exemplu SET $OFF=\033[0mcu ANSI.SYS încărcat sau SET $OFF=\024pentru o imprimantă IBM sau ESC / P. Pentru \nnnnotația octală specială acceptată, consultați %$CLS%. În timp ce variabila este nedefinită în mod implicit în DOS Plus și DR-DOS, implicit DOS Multiuser pentru un terminal ASCII este egal SET $OFF=\033q. A se vedea, de asemenea, variabila de mediu aferentă %$ON%.
%$HEADER%
Această variabilă poate conține o secvență de control opțională emisă înainte de ieșirea conținutului fișierului în comenzi precum TYPEîn DR-DOS 7.02 și mai mare. Acesta poate fi folosit pentru evidențierea, paginare sau formatare, fe la trimiterea de ieșire la o imprimantă, de exemplu , SET $HEADER=\017pentru un IBM sau ESC / P al imprimantei. Pentru \nnnnotația specială octală acceptată, consultați %$CLS%. A se vedea, de asemenea, variabila de mediu aferentă %$FOOTER%.
%$FOOTER%
Această variabilă poate conține o secvență de control opțională emisă după ieșirea conținutului fișierului în comenzi precum TYPEîn DR-DOS 7.02 și mai mare. Este folosit pentru a reveni la formatul normal de ieșire, adică SET $FOOTER=\022\014în exemplul de imprimantă de mai sus. Pentru \nnnnotația octală specială acceptată, consultați %$CLS%. A se vedea, de asemenea, variabila de mediu aferentă %$HEADER%.

Datalight ROM-DOS acceptă o serie de variabile de mediu standard suplimentare , inclusiv:

%DIRSIZE%
Această variabilă este utilizată pentru a defini dimensiuni de ecran non-standard rows[,cols]pentru DIRopțiuni /Pși /W(similar cu %$LENGTH%și %$WIDTH%sub DOS Plus).
%NEWFILE%
Această variabilă este setată automat la primul parametru dat directivei CONFIG.SYS NEWFILE .

%TZ%, %COMM%, %SOCKETS%, %HTTP_DIR%, %HOSTNAME%Și %FTPDIR%sunt , de asemenea , utilizate de către ROM-DOS.

OS / 2

%BEGINLIBPATH%
Conține o listă de directoare separate prin punct și virgulă care sunt căutate pentru DLL-uri înainte de directoarele date de %LIBPATH%variabilă (care este setată în timpul pornirii sistemului cu directiva specială CONFIG.SYSLIBPATH ). Aici puteți specifica directoare relative, inclusiv " ." pentru directorul de lucru curent. A se vedea, de asemenea, variabila de mediu aferentă %ENDLIBPATH%.
%ENDLIBPATH%
o listă de directoare , care urmează să fie căutat DLL - uri , cum ar fi %BEGINLIBPATH%, dar căutat după lista de directoare %LIBPATH%.

Windows

Variabilele căii de sistem se referă la locațiile resurselor critice ale sistemului de operare și, ca atare, în general nu sunt dependente de utilizator.

%APPDATA%
Conține calea completă către directorul Date aplicație al utilizatorului conectat. Nu funcționează pe Windows NT 4.0 SP6 UK.
%LOCALAPPDATA%
Această variabilă este fișierele temporare ale aplicațiilor . Utilizările sale includ stocarea temelor desktop , raportarea erorilor Windows , stocarea în cache și profilurile browserelor web.
%ComSpec%/%COMSPEC%
%ComSpec%Variabilă conține calea completă către procesorul de comandă; în familia de sisteme de operare Windows NT, acesta este cmd.exe , în timp ce în Windows 9x , %COMSPEC%este COMMAND.COM .
%OS%
%OS%Variabilă conține un nume simbolic al familiei sistemului de operare pentru a distinge între diferite seturi de caracteristici în batchjobs . Seamănă cu o variabilă de mediu numită identic, %OS%găsită în toate sistemele de operare legate de DOS ale Digital Research - originare, cum ar fi Concurrent DOS, Multiuser DOS , REAL / 32, DOS Plus , DR DOS , Novell DOS și OpenDOS. %OS%deține întotdeauna șirul " Windows_NT" pe familia Windows NT .
%PATH%
Această variabilă conține o listă de directoare delimitate de punct și virgulă (nu puneți spații între ele) în care interpretul de comandă va căuta un fișier executabil care se potrivește cu comanda dată. Variabilele de mediu care reprezintă căi pot fi imbricate în %PATH%variabilă, dar numai la un nivel de indirectare. Dacă această variabilă de mediu sub-cale conține în sine o variabilă de mediu reprezentând o cale, %PATH%nu se va extinde corect în substituția variabilei. Echivalent cu variabila Unix $PATH .
%ProgramFiles%, %ProgramFiles(x86)%,%ProgramW6432%
Cele %ProgramFiles%puncte variabile la Program Files directorul, care stochează toate programele instalate de Windows și altele. Valoarea implicită pentru sistemele în limba engleză este „ C:\Program Files”. În edițiile pe 64 de biți ale Windows (XP, 2003, Vista), există %ProgramFiles(x86)%, de asemenea , care este implicit " C:\Program Files (x86)" și %ProgramW6432%, care implicit este " C:\Program Files". În %ProgramFiles%sine depinde dacă procesul care solicită variabila de mediu este el însuși pe 32 de biți sau pe 64 de biți (acest lucru este cauzat de redirecționarea Windows pe Windows pe 64 de biți ).
%CommonProgramFiles%
Această variabilă indică directorul Common Files . Valoarea implicită este „ C:\Program Files\Common Files” în versiunea engleză a Windows.
%SystemDrive%
%SystemDrive%Variabila este un nivel de sistem special de variabile de mediu găsit pe Windows NT și derivații săi. Valoarea sa este unitatea pe care a fost plasat directorul de sistem. Valoarea lui %SystemDrive%este în majoritatea cazurilor „ C:”.
%SystemRoot%
%SystemRoot%Variabila este un nivel de sistem variabil de construcții de mediu găsit pe familia Windows NT de sisteme de operare. Valoarea sa este locația directorului de sistem, inclusiv unitatea și calea. Unitatea este aceeași ca %SystemDrive%și calea implicită pe o instalare curată depinde de versiunea sistemului de operare. În mod implicit:
%windir%
Această variabilă indică directorul Windows . (În familia de sisteme de operare Windows NT, este identică cu %SystemRoot%variabila). Windows 95 - 98 și Windows ME sunt, implicit, instalate în „ C:\Windows”. Pentru alte versiuni de Windows, consultați %SystemRoot%intrarea de mai sus.

Variabilele de gestionare a utilizatorilor stochează informații legate de resurse și setări deținute de diferite profiluri de utilizatori din sistem. Ca regulă generală, aceste variabile nu se referă la resurse de sistem critice sau locații care sunt necesare pentru ca sistemul de operare să ruleze.

%ALLUSERSPROFILE%( %PROGRAMDATA%din Windows Vista)
Această variabilă se extinde la calea completă către directorul profilului Toți utilizatorii . Acest profil conține resurse și setări care sunt utilizate de toate conturile de sistem. Scurtătură link - uri copiate pe toți utilizatorii \“ meniul Start sau desktop directoarele vor apărea în fiecare utilizator meniul Start sau desktop , respectiv.
%USERDOMAIN%
Numele grupului de lucru sau al domeniului Windows de care aparține utilizatorul curent. Variabila aferentă %LOGONSERVER%,, deține numele gazdei serverului care a autentificat datele de conectare ale utilizatorului curent (nume și parolă). Pentru computerele de acasă și PC-urile dintr-un grup de lucru, serverul de autentificare este de obicei PC-ul în sine. Pentru computerele dintr-un domeniu Windows, serverul de autentificare este un controler de domeniu (un controler de domeniu principal sau PDC, în domeniile bazate pe Windows NT 4).
%USERPROFILE%
O variabilă de mediu specială la nivel de sistem găsită pe Windows NT și derivatele sale. Valoarea sa este locația directorului de profil al utilizatorului curent, în care se găsește acel registru HKCU al utilizatorului ( NTUSER). Utilizatorii pot utiliza, de asemenea, %USERNAME%variabila pentru a determina identificarea utilizatorului activ.

Variabilele de sistem opționale nu sunt specificate în mod implicit în mod implicit, dar pot fi utilizate pentru a modifica comportamentul implicit al anumitor comenzi încorporate ale consolei. De asemenea, aceste variabile nu trebuie să fie specificate în mod explicit ca argumente de linie de comandă.

Valori implicite

Următoarele tabele prezintă valorile implicite tipice ale anumitor variabile de mediu din versiunile în engleză ale Windows, deoarece acestea pot fi recuperate în CMD.

(Unele dintre aceste variabile sunt de asemenea definite atunci când rulează COMMAND.COMsub Windows, dar diferă în anumite detalii importante: Conform COMMAND.COM., Numele variabilei de mediu sunt întotdeauna uppercased unele, dar nu toate variabilele conțin scurt 8.3 , mai degrabă decât nume de fișiere lungi . În timp ce unele variabile prezente în CMDmediu lipsesc, există și câteva variabile specifice COMMANDmediului.)

Variabil Locale specifice Windows XP (CMD) Windows Vista și versiunile ulterioare (CMD)
% ALLUSERSPROFILE% da C: \ Documente și setări \ Toți utilizatorii C: \ ProgramData
%DATELE APLICATIEI% da C: \ Documents and Settings \ {username} \ Application Data C: \ Users \ {nume de utilizator} \ AppData \ Roaming
% CommonProgramFiles% da C: \ Program Files \ Common Files C: \ Program Files \ Common Files
% CommonProgramFiles (x86)% da C: \ Program Files (x86) \ Common Files (numai în versiunea pe 64 de biți) C: \ Program Files (x86) \ Common Files (numai în versiunea pe 64 de biți)
% CommonProgramW6432% da % CommonProgramW6432% (nu este acceptat, nu este înlocuit cu nicio valoare) C: \ Program Files \ Common Files (numai în versiunea pe 64 de biți)
%NUMELE CALCULATORULUI% Nu {numele calculatorului} {numele calculatorului}
% ComSpec% Nu C: \ Windows \ System32 \ cmd.exe C: \ Windows \ System32 \ cmd.exe
% HOMEDRIVE% Nu C: C:
% HOMEPATH% da \ Documente și setări \ {nume de utilizator} \ Users \ {nume de utilizator}
% LOCALAPPDATA% da % LOCALAPPDATA% (nu este acceptat, nu este înlocuit cu nicio valoare) C: \ Users \ {nume de utilizator} \ AppData \ Local
% LOGONSERVER% Nu \\ {domain_logon_server} \\ {domain_logon_server}
%CALE% da C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; {plus căi de program} C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; {plus căi de program}
% PATHEXT% Nu .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .WSF; .WSH .com; .exe; .bat; .cmd; .vbs; .vbe; .js; .jse; .wsf; .wsh; .msc
% ProgramData% da % ProgramData% (nu este acceptat, nu este înlocuit cu nicio valoare) % SystemDrive% \ ProgramData
% ProgramFiles% da % SystemDrive% \ Fișiere de program % SystemDrive% \ Fișiere de program
% ProgramFiles (x86)% da % SystemDrive% \ Program Files (x86) (numai în versiunea pe 64 de biți) % SystemDrive% \ Program Files (x86) (numai în versiunea pe 64 de biți)
% ProgramW6432% da % ProgramW6432% (nu este acceptat, nu este înlocuit cu nicio valoare) % SystemDrive% \ Program Files (numai în versiunea pe 64 de biți)
%PROMPT% Nu Cod pentru formatul curent al promptului de comandă, de obicei $ P $ G Cod pentru formatul curent al promptului de comandă, de obicei $ P $ G
% PSModulePath% % PSModulePath% (nu este acceptat, nu este înlocuit cu nicio valoare) % SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ Modules \
%PUBLIC% da % PUBLIC% (nu este acceptat, nu este înlocuit cu nicio valoare) % SystemDrive% \ Users \ Public
% SystemDrive% Nu C: C:
% SystemRoot% Nu Directorul Windows, de obicei C: \ Windows, anterior C: \ WINNT % SystemDrive% \ Windows
% TEMP% și % TMP% da % SystemDrive% \ Documents and Settings \ {username} \ Local Settings \ Temp % SystemRoot% \ TEMP (pentru variabilele de mediu de sistem % TMP% și % TEMP% ), % USERPROFILE% \ AppData \ Local \ Temp (pentru variabilele de mediu utilizator % TMP% și % TEMP% )
% USERDOMAIN% Nu {userdomain} {userdomain}
%NUME DE UTILIZATOR% Nu {nume de utilizator} {nume de utilizator}
% PROFIL UTILIZATOR% da % SystemDrive% \ Documents and Settings \ {username} % SystemDrive% \ Users \ {username}
% windir% Nu % SystemDrive% \ WINDOWS % SystemDrive% \ Windows

În această listă, nu există nicio variabilă de mediu care să se refere la locația directorului My Documents al utilizatorului, deci nu există nicio metodă standard pentru setarea directorului home al unui program ca directorul My Documents .

Variabile de pseudo-mediu

Procesoarele de comandă din DOS și Windows acceptă, de asemenea, variabile pseudo-mediu. Acestea sunt valori care sunt preluate ca variabile de mediu, dar nu sunt stocate cu adevărat în mediu, ci sunt calculate la cerere.

DOS

Pe lângă variabilele de mediu adevărate, care sunt stocate static în mediu până când sunt modificate sau șterse, există o serie de variabile de pseudo-mediu pentru procesarea în serie.

Așa-numiții parametri de înlocuire sau parametri înlocuibili (terminologia Microsoft / IBM) aka variabile de înlocuire (Digital Research / Novell / terminologia Caldera) sau parametrii fișierului batch (terminologia software JP) %1.. %9și %0pot fi utilizați pentru a recupera parametrii de apelare ai unui batchjob , vezi SHIFT. În loturi, acestea pot fi recuperate la fel ca variabilele de mediu, dar nu sunt de fapt stocate în mediu.

Unele procesoare de linie de comandă (cum ar fi DR-DOS COMMAND.COM , Multiuser DOS MDOS.COM / TMP.EXE(Terminal Message Process), JP Software 4DOS , 4OS2 , 4NT , Take Command și Windows cmd.exe ) acceptă un tip de pseudo-variabile de mediu numite variabile de informații de sistem (Novell / Terminologie Caldera) sau variabile interne (terminologia JP Software), care pot fi folosite pentru a prelua diverse informații, posibil, dinamice, dar numai în citire, despre sistemul care rulează în lucrări batch. Valorile returnate reprezintă starea sistemului în momentul interogării acestor variabile; adică citirea lor de mai multe ori la rând poate returna valori diferite chiar și în cadrul aceleiași comenzi; interogarea acestora nu are niciun efect direct asupra sistemului. Deoarece nu sunt stocate în mediu, nu sunt listate de SET și nu există pentru recuperarea programelor externe. Dacă este definită o variabilă de mediu adevărată cu același nume, aceasta are prioritate față de variabila corespunzătoare până când variabila de mediu este ștearsă din nou. Nu sunt sensibile la majuscule și minuscule. Deși aproape toate astfel de variabile sunt prefixate cu un subliniere (" _") de 4DOS etc. prin convenție (fe %_SECOND%), ele nu se află sub DR-DOS COMMAND.COM(fe %OS_VERSION%).

În plus, 4DOS, 4OS2, 4NT și Take Command acceptă și așa-numitele funcții variabile , inclusiv cele definite de utilizator. Funcționează la fel ca variabilele interne , dar pot lua parametri opționali (fe %@EVAL[]%) și pot chiar schimba starea sistemului în funcție de funcția lor.

Variabile de informații de sistem acceptate de DR-DOS COMMAND.COM:

%AM_PM%
Această pseudo-variabilă returnează starea anterioară sau post-prânz a orei curente. Șirul returnat depinde de versiunea specifică locală a DR-DOS, fe " am" sau " pm" în versiunea în limba engleză. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%DAY%
Această pseudo-variabilă returnează zilele datei curente într-un format din 2 cifre cu zerouri din partea de sus, fe " 01" .. " 31". Vezi și pseudo-variabila similară %_DAY%. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%DAY_OF_WEEK%
Această pseudo-variabilă returnează numele zilei săptămânii într-un format cu 3 caractere. Șirul returnat depinde de versiunea specifică locală a DR-DOS, fe " Sun", " Mon", " Tue", " Wed", " Thu", " Fri" sau " Sat" în versiunea în limba engleză. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%ERRORLEVEL%
În COMMAND.COMDR-DOS 7.02 și versiuni ulterioare, această pseudo-variabilă returnează ultimul nivel de eroare returnat de un program extern sau de RETURNcomandă, fe " 0" .. " 255". A se vedea, de asemenea, pseudo-variabila numită identic %ERRORLEVEL%în Windows și IF ERRORLEVELcomanda condițională.
%ERRORLVL%
În DR-DOS 7.02 și versiuni ulterioare, această pseudo-variabilă returnează ultimul nivel de eroare într-un format din 3 cifre cu zerouri din partea de sus, fe " 000" .. " 255". Sub Multiuser DOS , aceasta este o adevărată variabilă de mediu actualizată automat de către shell la codul de retur al programelor care ies. A se vedea, de asemenea, pseudo-variabila aferentă %ERRORLEVEL%în DR-DOS și IF ERRORLEVELcomandă.
%GREETING_TIME%
Această pseudo-variabilă returnează ora de salut de 3 niveluri. Șirul returnat depinde de versiunea specifică locală a DR-DOS, fe " morning", " afternoon" sau " evening" în versiunea în limba engleză. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%HOUR%
Această pseudo-variabilă returnează orele orei curente în format de 12 ore fără zero zero, fe " 1" .. " 12". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%HOUR24%
Această pseudo-variabilă returnează orele orei curente în format de 24 de ore într-un format din 2 cifre cu zerouri de început, fe " 00" .. " 23". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare . Vezi și pseudo-variabila similară %_HOUR%.
%MINUTE%
Această pseudo-variabilă returnează minutele orei curente într-un format din 2 cifre cu zerouri de început, fe " 00" .. " 59". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare . Vezi și pseudo-variabila similară %_MINUTE%.
%MONTH%
Această pseudo-variabilă returnează lunile datei curente într-un format din 2 cifre cu zerouri de început, fe " 01" .. " 12". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare . Vezi și pseudo-variabila similară %_MONTH%.
%MONTH_NAME%
Această pseudo-variabilă returnează numele lunii datei curente. Șirul returnat depinde de versiunea specifică locală a DR-DOS, fe " January", " February", " March", " April", " May", " June", " July", " August", " September", " October" sau " December" în versiunea în limba engleză. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%NDAY_OF_WEEK%
Această pseudo-variabilă returnează numărul de zile din săptămâna curentă, fe " 1" .. " 7" (cu " 1" pentru duminică). Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%OS_VERSION%
Această pseudo-variabilă returnează versiunea sistemului de operare în funcție de setarea curentă a variabilei de mediu %VER%. Dacă %VER%nu este definit, %OS_VERSION%returnează „ off”. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare , care pot returna versiuni și pentru versiunile non-DR-DOS ale DOS.
%SECOND%
Această pseudo-variabilă returnează secundele timpului curent într-un format din 2 cifre cu zerouri de început, fe " 00" .. " 59". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare . Vezi și pseudo-variabila similară %_SECOND%.
%SHORT_YEAR%
Această pseudo-variabilă returnează anul datei curente într-un format din 2 cifre cu zerouri din partea de sus, fe " 93" .. " 99", " 00" .. " 92". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%YEAR% și %_YEAR%
Suportat de la Novell DOS 7 , %YEAR%pseudo-variabila returnează anul datei curente într-un format din 4 cifre, fe " 1980" .. " 2099". Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare . DR-DOS 7.02 și versiuni ulterioare adăugate %_YEAR%pentru compatibilitate cu 4DOS , returnând aceeași valoare.
%/%
În COMMAND.COMDR-DOS 7.02 și versiuni ulterioare, această pseudo-variabilă returnează setarea curentă SwitChar a sistemului, fie " /" (stil DOS), fie " -" (stil Unix). A se vedea, de asemenea, CONFIG.SYSdirectiva aferentă SWITCHAR și variabila de mediu %SWITCHAR%.
%_CODEPAGE%
Această pseudo-variabilă returnează pagina de cod curentă a sistemului (" 1" .. " 65533"), fe " 437", " 850", " 858". Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. Vezi și CHCPcomanda.
%_COLUMNS%
Această pseudo-variabilă returnează numărul curent de coloane de ecran în funcție de modul de afișare, fe " 40", " 80", " 132" etc. Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și de COMMAND.COMla DR-DOS 7.02. A se vedea, de asemenea, o variabilă de mediu similară %$WIDTH%în DOS Plus.
%_COUNTRY%
Această pseudo-variabilă returnează codul de țară actual al sistemelor (" 1" .. " 65534"), fe " 1" pentru SUA ", 44" pentru Marea Britanie ", 49" pentru Germania ", 20049" cu ISO 8601 ", 21049" cu ISO 8601 și suport Euro . Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. A se vedea, de asemenea, CONFIG.SYSdirectiva COUNTRY.
%_DAY%
Această pseudo-variabilă returnează zilele datei curente fără zero-uri înaintate, fe " 1" .. " 31". Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. Vezi și pseudo-variabila similară %DAY%.
%_HOUR%
Această pseudo-variabilă returnează orele orei curente în format de 24 de ore fără zero zero, fe " 0" .. " 23". Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. Vezi și pseudo-variabila similară %HOUR24%.
%_MINUTE%
Această pseudo-variabilă returnează minutele orei curente fără zero zero, fe " 0" .. " 59". Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. Vezi și pseudo-variabila similară %MINUTE%.
%_MONTH%
Această pseudo-variabilă returnează lunile datei curente fără zero-uri în frunte, fe " 1" .. " 12". Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. Vezi și pseudo-variabila similară %MONTH%.
%_ROWS%
Această pseudo-variabilă returnează numărul curent de rânduri de ecran în funcție de modul de afișare, fe " 25", " 43", " 50" etc. Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și de COMMAND.COMla DR-DOS 7.02. Vedeți o variabilă de mediu similară %$LENGTH%în DOS Plus.
%_SECOND%
Această pseudo-variabilă returnează secundele timpului curent fără zero-uri de început, fe " 0" .. " 59". Această variabilă a fost introdusă inițial de 4DOS , dar a devenit disponibilă și cu COMMAND.COMDR-DOS 7.02. Vezi și pseudo-variabila similară %SECOND%.

Variabile de informații de sistem acceptate de DR-DOS COMMAND.COMcu rețea încărcată:

%LOGIN_NAME%
Această pseudo-variabilă returnează numele de utilizator. Aceasta întotdeauna a lucrat cu NETX, dar , de asemenea , de lucru cu caracter personal NetWare lui ODI / VLM în cazul în care unitatea curentă este o unitate de PNW-mapate (altfel un șir gol este returnat). Vezi și variabila de mediu numită în mod similar %LOGINNAME%.
%P_STATION%
Această pseudo-variabilă returnează numărul stației fizice într-un format " ????????????". Valoarea depinde de adresa MAC a adaptorului de rețea, dar poate fi anulată. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%STATION%
Această pseudo-variabilă returnează numărul stației logice începând cu „ 1” pentru primul client. Numerele sunt atribuite de serverul de fișiere și rămân statice atât timp cât conexiunea IPX rămâne stabilită. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare .
%FULL_NAME%
Această pseudo-variabilă returnează numele complet al utilizatorului conectat, dacă este disponibil. Seamănă cu o variabilă de identificare numită identic în scripturile de conectare Novell NetWare . Vezi și pseudo-variabila aferentă %LOGIN_NAME%.

Windows

Variabilele dinamice de mediu (numite și variabile interne sau variabile de informații de sistem în DOS) sunt pseudo-variabile de mediu acceptate de CMDcând sunt activate extensiile din linia de comandă și se extind la diferite valori discrete ori de câte ori sunt solicitate, adică valorile lor se pot modifica atunci când sunt solicitate mai multe ori chiar în cadrul aceleiași comenzi. Deși pot fi utilizate în lucrări în serie și la prompt, acestea nu sunt stocate în mediu. În consecință, ele nu sunt nici listate SETși nici nu există pentru citirea programelor externe. Nu sunt sensibile la majuscule și minuscule.

Indirect, acestea sunt acceptate și în Windows COMMAND.COM, care a fost modificat pentru a apela intern CMD.EXEpentru a executa comenzile.

%CD%
Această pseudo-variabilă se extinde la directorul curent echivalent cu ieșirea comenzii CDatunci când este apelat fără argumente. În timp ce un nume de fișier lung poate fi returnat în CMD.EXEfuncție de directorul curent, faptul că directorul curent va fi întotdeauna în format 8.3 sub îl COMMAND.COMva face să returneze un nume de fișier scurt sub COMMAND.COM, chiar și atunci când COMMANDapeluri interne CMD.
%CMDCMDLINE%
Această pseudo-variabilă se extinde la parametrii de pornire inițiali ai CMD.EXE, fe " C:\Windows\system32\cmd.exe". În Windows COMMAND.COM, acest lucru poate returna ceva de genul " C:\Windows\system32\cmd.exe /c ..." datorită faptului că COMMAND.COMapelează CMD.EXEintern.
%CMDEXTVERSION%
Această pseudo-variabilă se extinde la versiunea extensiilor de linie de comandă a CMD.EXE, dacă este activată (de exemplu, „ 1„ în Windows NT ”, 2„ în Windows 2000 și Windows XP ).
%DATE%
Această pseudo-variabilă se extinde la data curentă. Data este afișată în funcție de preferințele de format de dată ale utilizatorului curent .
%ERRORLEVEL%
Această pseudo-variabilă se extinde la ultimul nivel de eroare setat, o valoare între „ 0” și „ 255” (fără zero-uri). Comenzile externe și unele comenzi interne stabilesc niveluri de eroare la executare. A se vedea, de asemenea, pseudo-variabila numită identic %ERRORLEVEL%sub DR-DOS și IF ERRORLEVELcomandă.
%RANDOM%
Această pseudo-variabilă returnează un număr aleatoriu între „ 0” și „ 32767”.
%TIME%
Această pseudo-variabilă returnează ora curentă. Ora este afișată în funcție de preferințele de format de oră ale utilizatorului curent. Dacă variabilele %TIME%și %DATE%sunt utilizate ambele, este important să le citiți pe amândouă în această ordine specială în succesiune rapidă, pentru a evita problemele de răsturnare la miezul nopții.

Alte scoici

Învelișurile de tip Unix au variabile similare generate dinamic, bash-ul $RANDOMfiind un exemplu bine cunoscut. Cu toate acestea, deoarece aceste cochilii au un concept de variabile locale, ele sunt descrise în schimb ca variabile locale speciale.

Vezi si

Note

Referințe

Lecturi suplimentare

linkuri externe