Proměnná prostředí

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 3. prosince 2019; kontroly vyžadují 19 úprav .

Proměnná prostředí ( angl.  environment variable ) je textová proměnná operačního systému , která ukládá jakékoli informace – například údaje o nastavení systému.

UNIXové proměnné prostředí

Proměnné prostředí nastavuje uživatel nebo skripty shellu. Počáteční sada proměnných je nastavena spouštěcími skripty operačního systému a skripty spouštěnými při přihlášení uživatele do systému, zejména /etc/profilea ~/.bash_profile.

Prostředí má v systémech UNIX velký význam, protože ukládá mnoho nastavení jak pro systém jako celek, tak pro jednotlivé programy. Důležitou funkcí je, že po vytvoření podřízený proces obdrží místní kopii prostředí nadřazeného procesu, a proto nemůže přímo měnit globální nastavení.

Prostředí je sada dvojic "název proměnné" a "hodnota proměnné", jejichž správa je obvykle přiřazena interpretu příkazů. Protože existuje velký počet interpretů, syntaxe se liší v závislosti na interpretru používaném uživatelem. "Název" i "hodnota" rozlišují velká a malá písmena, "Název" je obvykle velkými písmeny, mezery nejsou povoleny.

Skripty obvykle používají deklarace druhu ИМЯ_ПЕРЕМЕННОЙ="значение переменной", ale přesná syntaxe závisí na použitém interpretu.

Chcete-li získat hodnotu proměnné, před její název uveďte znak dolaru. Někdy je také nutné uvést název do závorek (například ve skriptech make ).

Z příkazového řádku jsou proměnné spravovány pomocí exportu a env .

Proměnné prostředí Windows

Proměnné prostředí se nastavují v registru Windows a pomocí softwaru. Lze je použít na příkazovém řádku a v adresním řádku Průzkumníka souborů.

Klasifikace

Proměnné prostředí Windows spadají do dvou kategorií:

Syntaxe

Přístup k nějaké proměnné prostředí je možný tímto způsobem: %ИМЯ_ПЕРЕМЕННОЙ%. Je také možné extrahovat část proměnné z proměnné (pokud nejsou rozšíření shellu na počítači zakázána, jsou ve výchozím nastavení povolena), například tisk různých částí proměnné VARpomocí příkazového řádku Windows :

Některé proměnné prostředí

Seznam nainstalovaných proměnných prostředí Windows lze nalézt zadáním do příkazového řádku: setnebo kliknutím na tlačítko Proměnné prostředí na kartě Upřesnit v dialogovém okně Vlastnosti systému (Tento počítač→Vlastnosti).

název Účel Příklad hodnoty
%ALLUSERSPROFILE% Určuje cestu ke složce pro sdílené dokumenty a nastavení společná pro všechny uživatele . C:\ProgramData\
%APPDATA% Určuje cestu ke složce, kde jsou uložena nastavení některých programů aktuálního uživatele. C:\Documents And Settings\Администратор\Application Data
%CLIENTNAME% Proměnná je definována pouze v prostředí Připojení ke vzdálené ploše. Ukládá název počítače (%COMPUTERNAME%) klienta vzdáleného přístupu. MyPC
%COMMONPROGRAMFILES% Určuje cestu ke složce, kde jsou uloženy soubory sdílené nainstalovanými programy. C:\Program Files\Common Files
%COMPUTERNAME% Ukládá název počítače v místní síti. Начальник
%COMSPEC% Ukládá cestu k aktuálnímu prostředí Windows . C:\Windows\System32\cmd.exe
%HOMEDRIVE%, %SYSTEMDRIVE% Ukládá název systémové jednotky. C:
%HOMEPATH%, %USERPROFILE% Ukládá cestu k domovské složce uživatele C:\Documents And Settings\Администратор
%WINDIR% Ukládá cestu ke složce, kde je nainstalován systém Windows C:\Windows
%SYSTEMROOT% Ukládá cestu k systémové složce (kde je uloženo jádro atd.) C:\Windows
%PROGRAMFILES% Ukládá cestu ke složce s nainstalovanými aplikacemi C:\Program Files
%SESSIONNAME% Ukládá název uživatelské relace. V místní relaci je to hodnota Console, v připojení ke vzdálené ploše pomocí TCP/IP je to RDP-Tcp#<číslo relace>. Console, RDP-Tcp#1

Seznam proměnných

V moderních operačních systémech Microsoft na platformě NT se k získání informací o systému používají následující proměnné [1] ( tučný text odkazuje na verze operačních systémů Windows počínaje Vista (Vista/7/8/8.1/10) ) :

název Typ Popis
ALLUSERSPROFIL místní Vrátí umístění profilu "Všichni uživatelé". V systému Windows 7 vrací cestu ke složce C:\ProgramData\ .
DATA APLIKACÍ systémové Vrátí výchozí umístění pro data aplikace. V systému Windows XP je to C:\Documents and Settings\%UserName%\Application Data. V systému Windows 7 - C:\Users\%UserName%\AppData\Roaming .
CD místní Určuje cestu k aktuálnímu adresáři. Totožné s příkazem CD bez argumentů.
JMÉNO KLIENTA místní dynamika Proměnná je definována pouze v prostředí Připojení ke vzdálené ploše. Ukládá název počítače (%COMPUTERNAME%) klienta vzdáleného přístupu.
CMDCMDLINE místní Přesný příkaz použitý ke spuštění aktuálního cmd.exe.
CMDEXTVERZE systémové Verze aktuálních rozšíření příkazového procesoru.
SPOLEČNÉ PROGRAMY systémové Umístění adresáře "Common Files" (obvykle %ProgramFiles%\Common Files).
COMMONPROGRAMFILES(x86) systémové Umístění adresáře "Common Files" v Program Files (x86) pro 64bitový OS (obvykle %ProgramFiles(x86)%\Common Files) .
COMPUTERNAME systémové Název počítače
COMSPEC systémové Cesta ke spustitelnému souboru shellu.
DATUM systémové Vrátí aktuální datum. Používá stejný formát jako příkaz date /t. Vytvořeno příkazem Cmd.exe.
ERRORLEVEL systémové Vrátí chybový kód posledního použitého příkazu. Nenulová hodnota obvykle znamená chybu.
HOMEDRIVE systémové Vrátí název jednotky místní pracovní stanice přidružené k domovskému adresáři uživatele. Nastavit na základě umístění hlavního adresáře. Domovský adresář uživatele je určen v modulu snap-in Místní uživatelé a skupiny.
HOMEPATH systémové Vrátí úplnou cestu k domovskému adresáři uživatele. Nastavit na základě umístění hlavního adresáře. Domovský adresář uživatele je určen v modulu snap-in Místní uživatelé a skupiny.
HOMESHARE systémové Vrátí síťovou cestu ke sdílenému domovskému adresáři uživatele. Nastavit na základě umístění hlavního adresáře. Domovský adresář uživatele je určen v modulu snap-in Místní uživatelé a skupiny.
LOCALAPPDATA systémové Vrátí výchozí místní umístění pro data aplikace (C:\Users\%UserName%\AppData\Local) .
LOGONSERVER místní Název řadiče domény, který byl použit k autorizaci aktuálního uživatele.
NUMBER_OF_PROCESSORS systémové Počet procesorů v systému (ve skutečnosti počet jader).
OS systémové Název operačního systému. Windows XP a Windows 2000 se zobrazí jako Windows_NT.
CESTA systémové Určuje cestu pro hledání spustitelných souborů.
PATHEXT systémové Vrátí seznam přípon souborů, které jsou operačním systémem považovány za spustitelné.
PROCESSOR_ARCHITECTURE systémové architektura procesoru. Možné volby: x86 , IA64 , AMD64 .
PROCESSOR_IDENTIFIER systémové Popis procesoru (na internetu se často vyskytuje chybný pravopis PROCESSOR_IDENTFIER - chybí písmeno).
PROCESSOR_LEVEL systémové Číslo modelu procesoru.
PROCESSOR_REVISION systémové Revize procesoru.
PROGRAMOVÉ DATA systémové Vrátí cestu k adresáři C:\ProgramData\ (podobně jako ALLUSERSPROFILE) .
PROGRAMOVÉ SOUBORY systémové Cesta k adresáři Program Files .
PROGRAMFILES(x86) systémové Cesta k adresáři Program Files (x86) na 64bitových systémech pro aplikace architektury x86.
VÝZVA místní Vrátí možnosti příkazového řádku pro aktuální interpret. Vytvořeno příkazem Cmd.exe.
VEŘEJNOST systémové V systému Windows 7 vrací cestu k adresáři C:\Users\Public .
NÁHODNÝ systémové Náhodné desetinné číslo od 0 do 32767. Generováno Cmd.exe.
SAFEBOOT_OPTION systémové Existuje pouze v nouzovém režimu . Přebírá hodnotu typu nouzového režimu, ve kterém systém běží. V nouzovém režimu a nouzovém režimu s podporou příkazového řádku je nastavena na MINIMÁLNÍ. V nouzovém režimu s podporou síťového ovladače je nastavena na Síť.
SESSIONNAME místní Ukládá název aktivní uživatelské relace. Nastavte na "Console" pro místní přihlášení, RDP-Tcp#<číslo relace> pro vzdálený přístup
SYSTEMDRIVE systémové Jednotka, kde je umístěn kořenový adresář Windows.
SYSTEMROOT systémové Cesta ke kořenovému adresáři Windows.
TEMP a TMP systémové a místní Získá výchozí dočasné adresáře používané aplikacemi, které jsou dostupné přihlášeným uživatelům. Některé aplikace vyžadují proměnnou TEMP, jiné vyžadují proměnnou TMP. TEMP a TMP mohou potenciálně odkazovat na různé adresáře, ale obvykle jsou stejné.
ČAS systémové Vrátí aktuální čas. Používá stejný formát jako příkaz time /t. Vytvořeno příkazem Cmd.exe. Další informace o příkazu time najdete v tématu Čas.
USERDOMAIN místní Název domény, do které aktuální uživatel patří.
USERNAME místní Jméno aktuálního uživatele.
UŽIVATELSKÝ PROFIL místní Cesta k profilu aktuálního uživatele.
WINDIR systémové Adresář, kde je nainstalován systém Windows.

Práce s proměnnými

Chcete-li získat přístup k hodnotě proměnné, musíte před a za její název vložit znak %, například:

echo %PROCESSOR_ARCHITECTURE%

Chcete-li nastavit hodnotu proměnné:

SET TEMP=C:\TEMP

S proměnnými prostředí můžete pracovat také kliknutím na tlačítko "Proměnné prostředí" na kartě "Upřesnit" v dialogovém okně "Vlastnosti systému" (kontextová nabídka ikony "Tento počítač" → položka "Vlastnosti").

Musíte si také pamatovat, že na rozdíl od systémů UNIX v DOSu a ve standardním příkazovém řádku Windows proměnné prostředí nedědí procesy, které jsou spuštěny, ale jsou sdíleny. To umožňuje například vracet jejich prostřednictvím výsledky programů, ale na druhou stranu vytváří možnost poškození nebo přetečení. Přetečení je zvláště důležité pro proměnnou PATH, protože je často doplňována, když jsou spuštěny různé skripty. Když k takovému přetečení dojde, stačí restartovat interpret příkazového řádku. Překladačů portovaných ze systémů UNIX (např. Z-shell) se tento problém netýká.

Hodnotu proměnné v kódu můžete získat pomocí metody ExpandEnvironmentStrings objektu COM WScript.Shell:

WScriptShell = ObjCreate("WScript.Shell") Uživatelské jméno = WScriptShell.ExpandEnvironmentStrings("%USERNAME%")

Je třeba poznamenat, že sadu hodnot proměnných prostředí získá proces v době svého spuštění, všechny podřízené procesy, které spustí, obdrží hodnoty proměnných z této sady, pokud druhý proces (nezávisle na prvním ) změní hodnotu proměnné prostředí nebo vytvoří novou proměnnou, tyto změny nebudou dostupné pro první proces.

Hodnoty proměnných prostředí LOGONSERVER, CLIENTNAME, SESSIONNAME, APPDATA, HOMEDRIVE, HOMEPATH se nastavují při otevření relace na základě hodnot v klíči registru [HKEY_CURRENT_USER\Volatile Environment].

Hodnoty globálních proměnných prostředí jako PATH, TEMP atd. jsou uloženy ve větvi registru [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment].

Ztraceno v překladu

Je velmi běžné špatně rozumět slovu „životní prostředí“ ve spojení „proměnné prostředí“. Nedorozumění vzniká čtením slova „životní prostředí“ se špatným důrazem na první slabiku, což vede k rozpoznání tohoto slova jako formy nominativu množného čísla slova „životní prostředí“ (životní prostředí). Správné je chápání slova „prostředí“ jako tvaru genitivu jednotného čísla slova „prostředí“ a výslovnost s důrazem na druhou slabiku.

Není tedy správné říkat například „s proměnnými prostředí“ („s proměnnými prostředí“), ale je správné říkat „s proměnnými prostředí“ („s proměnnými prostředí“).

Poznámky

  1. Proměnné prostředí (Windows) . msdn.microsoft.com. Získáno 29. června 2018. Archivováno z originálu 29. června 2018.