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ésA 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ésA 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ésMinden 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ésA 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ésKö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ésAz é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ésA 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ésA 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ésNemcsak 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ésForrá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