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.
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í 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ů.
Proměnné prostředí Windows spadají do dvou kategorií:
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 :
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 |
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. |
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:\TEMPS 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].
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í“).