Proměnná prostředí

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Proměnná prostředí je v informatice dynamická proměnná, která je v operačním systému vlastností běžícího procesu. Proměnných prostředí je obvykle více, lze je měnit a jejich obsah může ovlivnit práci běžícího procesu. Proměnné prostředí jsou používány v unixových systémech i v systémech DOS nebo Microsoft Windows, avšak jejich názvy se v jednotlivých systémech liší.

Charakteristika

Proměnné prostředí jsou součástí běhového prostředí, ve kterém proces běží. Proměnné prostředí byly ve své moderní formě představeny v roce 1979 v systému Unix verze 7 (Version 7 Unix) a od té doby jsou součástí všech unixových systémů včetně Linuxu a systému OS X. +more V roce 1982 firma Microsoft zavedla podporu proměnných prostředí do systému PC DOS 2. 0 a od té doby jsou používány ve všech jejích systémech včetně systémů Microsoft Windows.

Proměnná prostředí je nastavena v operačním systému a procesy je přebírají. Při vzniku nového procesu jsou proměnné prostředí děděny od rodičovského procesu do potomka (do nového procesu). +more Proces vlastní svoje vlastní proměnné prostředí, může zjistit jejich hodnotu, změnit je nebo je zrušit. Proměmnné prostředí mohou obsahovat důležité informace, které je potřeba procesům sdělit. Takže například proměnná TEMP obsahuje cestu, která určuje vhodné místo pro uložení dočasných souborů nebo proměnná HOME nebo USERPROFILE obsahuje cestu k domácímu adresáři uživatele, který proces spustil.

Unixové systémy

Ve všech Unixových systémech má každý proces vlastní sadu proměnných prostředí. Defaultně je nastaveno, že když je vytvořen proces, zdědí stejné prostředí, jako jeho rodičovský proces, až na explicitní změny, které rodičovský proces udělá, když potomka vytvoří. +more Na úrovni API musí být tyto změny provedeny mezi použitím příkazů fork a exec. Při použití příkazového shellu jako je bash, může uživatel změnit proměnné prostředí pro volání jednotlivých příkazů tak, že je nepřímo zavolá pomocí env nebo ENVIRONMENT_VARIABLE=VALUE.

Použití

Proměnné prostředí mají různá použití, například:

* PATH - seznam prohledávaných adresářů při spuštění příkazu * HOME - domácí adresář v unixových systémech * %UserProfile% - domácí adresář v systémech řady Windows NT * EDITOR nebo VISUAL - výběr textového editoru (např. pro příkaz crontab, edquota) * TERM - specifikuje typ terminálu či emulátoru terminálu, který počítač používá (např. +more VT100 nebo hloupý terminál (anglicky dumb terminal)) * PS1 - specifikuje, jak se zobrazuje nápověda v Bourne shellu * MAIL - používá se k nalezení místa, kde se nachází email uživatele * TEMP - používá se k nalezení adresáře, kam mohou procesy ukládat dočasné soubory.

Shellové skripty a dávkové soubory používají proměnné prostředí ke komunikaci s daty a nastavování preferencí pro procesy potomků. Také mohou byt použity k uložení dočasných hodnot pro pozdější použití v shellovém skriptu. +more V unixu se však pro tyto účely většinou využívají jiné proměnné.

Pokud v Unixu dojde ke změně proměnné prostředí pomocí skriptu nebo kompilovaného programu, tato změna ovlivní pouze samotný proces, případně procesy potomků. Rodičovský proces a ostatní nesouvisející procesy nejsou ovlivněny. +more Při změně nebo odstranění hodnoty proměnné v dávkovém souboru u MS-DOS, zůstane proměnná pozměněna po dobu, kterou je spuštěn COMMAND. COM.

V Unixu jsou proměnné prostředí standardně inicalizovány pomocí systémových skriptů během spouštění systému, jsou tedy zděděny všemi ostatními procesy v systému. Uživatel je může rozšířit v profilovém skriptu příkazového shellu, který používá. +more V systému Microsoft Windows jsou hodnoty proměnných prostředí uloženy v registru Windows nebo nastaveny v systémovém souboru AUTOEXEC. BAT.

Při spuštění procesu v Unixu, který má nastaven příznak setuid, je seznam proměnných prostředí redukován, protože proces běží s jinými oprávněními, než má volající uživatel. Za běžných okolností nahraje dynamický linker do paměti kód z umístění určených proměnnými prostředí LD_LIBRARY_PATH a LD_PRELOAD a teprve pak proces spustí. +more Kdyby tímto způsobem fungoval i proces s nastaveným atributem setuid, mohlo by dojít k narušení bezpečnosti, protože volající uživatel by mohl zneužít oprávnění, kterými normálně nedisponuje. Z tohoto důvodu standardní knihovna jazyka C při spuštění procesu s příznakem setuid odstraní voláním funkce unset proměnné prostředí a nastaví je na jiné hodnoty.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top