Környezeti változók
A környezeti változók (angolul environment variables) a számítógép működésére nézve fontos információkat tartalmazó szöveges (sztring) szimbólumok, amelyeket az operációs rendszer tárol (A környezeti változók nem tévesztendőek össze a programok belső változóival). A környezeti változók mindig a programokon kívül léteznek, de a programok számára elérhetőek: a programok „közelében”, környezetében fordulnak elő. Környezeti változó például a PATH
, a PROMPT
, a TEMP
, stb. A környezeti változók értékeit a programok lekérdezhetik és felhasználhatják működésükhöz.
Jelentősége
[szerkesztés]A környezeti változók legfontosabb alkalmazási területe a rendszer indítása során a felhasználó számára kényelmes, egyedi környezet automatikus beállítása Például a rendszerdátum, készenléti jel, időzóna, használt nyelv és kódlapok, stb., stb. beállítása. A környezeti változók egyéb alkalmazásokban főként akkor válnak jelentőssé, amikor
- adato(ka)t kell átadni olyan programok részére, amelyek a kérdéses adato(ka)t parancssori paraméterként nem tudják átvenni;
- az operációs rendszer egyes szolgáltatásait kell elérni (például rendszeridő, könyvtárak, fájlok elérési útjai) jelentősebb programozói erőforrás igénybevétele nélkül;
- programok közötti néhány szavas adattovábbításra van szükség és az átadandó adatok fájlba írására nincs lehetőség.[1]
Számos program úgy van megszerkesztve, hogy működése függ egyes környezeti változók értékeitől. Ezért a programok indulás előtt ellenőrizhetik bizonyos környezeti változók meglétét. Például a legtöbb szöveg- és dokumentumszerkesztő program hoz létre átmeneti munkafájlokat (ideiglenes fájlokat) adtatok tárolására, amelyeket kilépéskor automatikusan töröl. Az átmeneti fájlok helye rendszerint a TEMP
környezeti változó által meghatározott könyvtár.
Számos program egyedi környezeti változót használ működésének befolyásolására.[2][3]
Példa:
REM a halom (heap) memóriaméretét állítja be egy LISP interpreter számára
SET LISPHEAP=39000
Néhány program pedig indítási kísérlet után hibaüzenettel leáll, ha az általa keresett speciális környezeti változót nem találja meg, vagy a megtalált környezeti változó a program számára hibás adatokat tartalmaz.
Története
[szerkesztés]A környezeti változók mai formáját 1979-ben a Unix 7-es verzióban vezették be és benne van a Unix operációs rendszerekben, beleértve a Linuxot és OS X-et is, majd átvette a PC DOS 2.0-1982-ben. Később a Microsoft összes operációs rendszere is használatba vette a környezeti változókat, bár némileg eltérő a használat szintaxisa (a környezeti változókra való hivatkozás és a kiértékelés módja) továbbá eltérés van egyes változók neveiben is. Néhány környezeti változó csak az adott operációs rendszerben található meg, mint például a %PWD% vagy a %WINDIR%
Alapok
[szerkesztés]Minden Unix/Linux operációs rendszer, a DOS és a Microsoft Windows összes verziója használ környezeti változókat, de nem mindegyik ugyanazokat. Néhány környezeti változó:[4]
PWD
- az aktuális könyvtár neve;HOME
– azt a könyvtárat jelöli, amelybe egy cd utasítás hatására ugrik;PATH
– azon könyvtárak listája ahol a parancsértelmező a kiadott parancsokat keresi;MAIL
– a leveleket tartalmazó fájl neve;TERM
– a terminál típusa;SHELL
– a bináris shell állomány elérési útvonala;LOGNAME
– az a név amelyen a felhasználót a rendszer nyilvántartja.
Környezeti változó lekérdezése
[szerkesztés]A rendszerben lévő környezeti változók lekérdezése függ a használt operációs rendszertől. A paraméter nélkül, önmagában kiadott SET
parancs minden operációs rendszeren kiíratja az összes használt környezeti változó nevét és azok értékeit is[5]
Amennyiben csak egyetlen környezeti változó értékére van szükség, akkor a lekérdezni kívánt környezeti változó pontos nevét kell megadni az adott operációs rendszer szabályai szerint. Egy példa a TEMP
környezeti változó értékének lekérdezésére különböző operációs rendszerekben:
a) Unix/Linux esetén
echo $TEMP
b) MS-DOS, OS/2 és Windows rendszerekben
ECHO %TEMP%
Windows PowerShell használata esetén pedig:
Write-Output $TEMP
Létrehozás, értékadás
[szerkesztés]Környezeti változókat általában a rendszerindító és konfigurációs állományok (például az AUTOEXEC.BAT
fájl) hoznak létre. A számítógép kezelőjének kétféle lehetősége van környezeti változó létrehozására:
- parancssorba való begépeléssel vagy
- batch programmal (shell szkripttel).
Környezeti változó létrehozása a SET
paranccsal történik. Egy környezeti változó értékadáskor automatikusan jön létre:
@ECHO OFF
REM környezeti változó létrehozása értékadással
SET vackor="vadkörte"
Módosítás
[szerkesztés]Az értékadás egyik esete a módosítás, melynek során a környezeti változó értéke
- törlődhet és ezután felvesz az új értéket (kicserélődik), vagy
- kiegészül a meglévő érték megtartása mellett (például a
PATH
) környezeti változó.
@ECHO OFF
REM a PATH környezeti változó kiegészítése új könyvtár elérési útjával
SET PATH=%PATH%;c:\DOS
Nem minden környezeti változó módosítható. A felhasználó által létrehozott környezeti változókon kívül a rendszerben mindig meglévő környezeti változók lehetnek
- konstans vagy
- dinamikus
környezeti változók.
A konstans környezeti változók nem módosíthatóak. Ilyen például a processzor típusát visszaadó környezeti változó.
A dinamikus környezeti változók értékeit általában a rendszer automatikusan frissíti, de esetenként (megfelelő szabályok betartásával) módosíthatóak. Dinamikus környezetváltozók közé tartoznak például az aktuális dátumot, időt vagy az aktuális könyvtár nevét tároló környezeti változók.
Dokumentálatlan környezeti változók
[szerkesztés]A legtöbb rendszer tartalmaz nem publikált, nem dokumentált környezeti változókat. Például a Windows az alábbi nem dokumentált – csak olvasható – környezeti változókat használja:
Változó neve | Jelentése |
---|---|
%__CD__%
|
Az aktuális könyvtár neve \-jellel lezárva |
%=C:%
|
A C: meghajtó használata esetén az aktuális könyvtár
|
%=D:%
|
A D: meghajtó használata esetén az aktuális könyvtár
|
%=ExitCode%
|
A legutolsó futott program kilépési kódja tizenhatos számrendszerben |
%=ExitCodeAscii%
|
A legutolsó futott program kilépési kódjának ASCII értéke, ha nyomtatható karakter (32-től nagyobb) |
Microsoft Windows környezeti változói
[szerkesztés]A következő táblázat a Windows operációs rendszer környezeti változóinak leírását tartalmazza:
Változó neve | Jelentése |
---|---|
%ALLUSERSPROFILE%
|
"All Users" profil elérési útja. |
%APPDATA%
|
Az alkalmazások a profilon belül itt tárolják az adataikat. |
%CD%
|
Aktuális könyvtár. |
%CMDCMDLINE%
|
Az éppen futó parancssor ("cmd.exe") elérési útja, idézőjelbe téve. |
%CMDEXTVERSION%
|
Parancssor verziószám. |
%COMPUTERNAME%
|
Számítógépnév. |
%COMMONPROGRAMFILES%
|
C:\Program Files\Common Files |
%COMMONPROGRAMFILES(x86)%
|
? C:\Program Files (x86)\Common Files (csak 64 bites verziókban) |
%COMSPEC%
|
A parancsértelmező helye: C:\Windows\System32\cmd.exe |
%DATE%
|
Rendszerdátum. |
%ERRORLEVEL%
|
Futás során keletkezett kilépési hibák kódja. Ha 0, akkor nem volt hiba. |
%HOMEDRIVE%
|
C:
|
%HOMEPATH%
|
A felhasználó saját könyvtárának elérési útja. \Documents and Settings\{username}
|
%HOMESHARE%
|
A felhasználó saját megosztott könyvtárának elérési útja. |
%LOCALAPPDATA%
|
? |
%LOGONSERVER%
|
Az aktuális munkafolyamat ezen a kiszolgálón zajlik (ide jelentkezett be a felhasználó). |
%NUMBER_OF_PROCESSORS%
|
Processzorok száma. |
%OS%
|
Operációs rendszer neve. A Windows XP és a Windows 2000 a Windows_NT értéket adja vissza. |
%PATH%
|
Végrehajtható fájlok keresési útvonala: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{plusz program path}
|
%PATHEXT%
|
Végrehajthatónak minősített fájlok kiterjesztései: COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH
|
%PROCESSOR_ARCHITECTURE%
|
Processzor architektúra: x86, IA64. |
%PROCESSOR_IDENTIFIER%
|
Processzor azonosító. |
%PROCESSOR_LEVEL%
|
Processzor modell száma. |
%PROCESSOR_REVISION%
|
Processzor revízió száma. |
%PROGRAMDATA%
|
? |
%PROGRAMFILES%
|
%SystemDrive%\Program Files
|
%PROGRAMFILES(X86)%
|
%SystemDrive%\Program Files (x86) (csak 64 bites verziókban)
|
%PROMPT%
|
Kódokkal állítható be a készenléti jel.Default: $P$G |
%PSModulePath%
|
? |
%PUBLIC%
|
? |
%RANDOM%
|
Véletlenszám előállítás 0 és 32767 között. |
{Drive}:\$Recycle.Bin
|
C:\Recycle.Bin
|
%SystemDrive%
|
Az operációs rendszert tartalmazó kötet meghajtóbetűjele. |
%SystemRoot%
|
A Windows könyvtár elérési útja; C:\Windows , formálisan C:\WINNT
|
%TEMP% és %TMP%
|
Átmeneti fájlok tárolásának elérési útja (TEMP vagy TMP mappa) %SystemDrive%\Documents and Settings\{username}\Local Settings\Temp
|
%TIME%
|
Aktuális idő. |
%USERDOMAIN%
|
Aktuális felhasználói fiókot tartalmazó tartomány neve. |
%USERNAME%
|
Bejelentkezett felhasználó neve. |
%USERPROFILE%
|
A Windows könyvtár elérési útja (u.a., mint SYSTEMROOT) %SystemDrive%\Documents and Settings\{username}
|
%WINDIR%
|
A Windows könyvtár elérési útja (u.a., mint SYSTEMROOT) %SystemDrive%\Windows
|
Programozási nyelvek és a környezeti változók
[szerkesztés]Nemcsak az operációs rendszer, hanem számos fejlesztői rendszer és programozási nyelv is hozzáférést biztosít a környezeti változókhoz. Például a legtöbb C nyelvű fordító stdlib
könyvtára tartalmazza a char *getenv(const char *name)
és a int putenv(char *newvalue)
függvényeket, melyek a környezeti változók kezelésére szolgálnak.[6]
Operációs rendszerektől függő sajátosságok
[szerkesztés]- Unix/Linux rendszerek esetén egy processz örökli a környezeti változók másolatát és csak a környezeti változók másolatához férhet hozzá.
- DOS operációs rendszerek esetén a környezeti változók számára fenntartott memória nagysága korlátozva lehet.
- Windows alatt a
PATH
környezeti változó törlése a rendszer összeomlásával járhat, mert nem találja meg a rendszerfájlokat sem.
Jegyzetek
[szerkesztés]- ↑ Például Unix esetén nincs írási jogunk a könyvtárra, stb.
- ↑ Archivált másolat. [2013. november 24-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. október 30.)
- ↑ A Unix
man
parancsa például a nyelvek közötti váltásra használja aLANG
környezeti változót - ↑ http://www.letix.hu/#bash
- ↑ uo. Unix/Linux alatt környezeti változók lekérdezésére további lehetőségek is vannak, mint pl. az
env
vagyprintenv
parancs használata, stb. - ↑ Pere László: Unix - GNU/LinuxProgramozás C nyelven Kiskapu Kiadó 2003, ISBN 9789639301689, p. 100-103.
Kapcsolódó szócikkek
[szerkesztés]Források
[szerkesztés]- Pere László: Unix - GNU/Linux - Programozás C nyelven Kiskapu Kiadó 2003, ISBN 9789639301689, p. 100-103.
- https://web.archive.org/web/20131124134946/http://ghostscript.com/doc/7.07/Use.htm#Environment_variables
- Unix ismertető, MEK
- Bauer Péter: Programozás jegyzet, Győr 2004, p.199-200.
- Windows Environment Variables
- Environment variable