Handbook:Alpha/Working/EnvVar/hu

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Alpha/Working/EnvVar and the translation is 100% complete.
Alpha kézikönyv
A Gentoo Linux telepítése
A telepítésről
Telepítőképfájl kiválasztása
Hálózat beállítása
Adathordozók előkészítése
Fokozat (stage) fájl
Alaprendszer telepítése
Kernel beállítása
Rendszer beállítása
Eszközök telepítése
Bootloader beállítása
Telepítés véglegesítése
Munka a Gentoo rendszerrel
Portage bemutatása
USE jelölőzászlók
Portage jellemzői
Init-szkript rendszer
Környezeti változók
Munka a Portage szoftvercsomag-kezelővel
Fájlok és könyvtárak
Változók
Szoftverágak keverése
További eszközök
Egyéni szoftvercsomag-tárolóhely
Fejlett funkciók
Hálózat beállítása OpenRC init-rendszeren
Munka elkezdése
Fejlett beállítások
Moduláris hálózat
Vezeték nélküli (Wi-Fi)
Funkcionalitás hozzáadása
Dinamikus menedzsment


Környezeti változók

Bevezetés

A környezeti változó egy elnevezett objektum, amelyet egy vagy több alkalmazás használhat. Környezeti változók használatával könnyedén megváltoztatható egy vagy több alkalmazás beállítása.

Fontos példák

Az alábbi táblázat felsorolja a Linux rendszer által használt változókat, és leírja azok használatát. Példaértékeket a táblázat után mutatunk be.

Változó Leírás
PATH Ez a változó egy kettősponttal elválasztott könyvtárlistát tartalmaz, amelyekben a rendszer végrehajtható fájlokat keres. Ha egy végrehajtható fájl neve kerül beírásra (például ls, rc-update vagy emerge), de ez a végrehajtható fájl nincs a listában szereplő könyvtárak egyikében sem, akkor a rendszer nem hajtja végre azt (kivéve, ha a teljes elérési út van megadva parancsként, például /bin/ls).
ROOTPATH Ez a változó ugyanazt a funkciót látja el, mint a PATH, de ez csak azokat a könyvtárakat sorolja fel, amelyeket ellenőrizni kell, amikor a root-felhasználó ad parancsot.
LDPATH Ez a változó egy kettősponttal elválasztott könyvtárlistát tartalmaz, amelyeket a dinamikus linker keres a könyvtárak megtalálásához.
MANPATH Ez a változó egy kettősponttal elválasztott könyvtárlistát tartalmaz, amelyeket a man(1) parancs keres a man oldalak megtalálásához.
INFODIR Ez a változó egy kettősponttal elválasztott könyvtárlistát tartalmaz, amelyeket a info(1) parancs keres az információs oldalak megtalálásához.
PAGER Ez a változó tartalmazza az elérési útvonalat ahhoz a programhoz, amelyet a fájlok tartalmának listázására használnak (például less vagy more(1)).
EDITOR Ez a változó tartalmazza az elérési útvonalat ahhoz a programhoz, amelyet fájlok szerkesztésére használnak (például nano vagy vi).
KDEDIRS Ez a változó egy kettősponttal elválasztott könyvtárlistát tartalmaz, amely KDE-specifikus anyagokat tartalmaz.
CONFIG_PROTECT Ez a változó egy szóközzel elválasztott könyvtárlistát tartalmaz, amelyet a Portage szoftvercsomag-kezelőnek védenie kell a szotvercsomagok frissítése során.
CONFIG_PROTECT_MASK Ez a változó egy szóközzel elválasztott könyvtárlistát tartalmaz, amelyet nem kell védenie a Portage szoftvercsomag-kezelőnek a szoftvercsomagok frissítése során.

Az alábbiakban bemutatjuk az összes ezen változók példadefinícióját:

CODE Példabeállítások az említett változókhoz
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
# Directories that are protected during package updates.
# Note the use of the \ (backslashes) on the end of the following lines which interprets to a single space-delimited line.
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
# Directories that are _not_ protected during package updates.
CONFIG_PROTECT_MASK="/etc/gconf"

A változók globális meghatározása

Az env.d könyvtár

A változók meghatározásának központosítása érdekében a Gentoo bevezette az /etc/env.d/ könyvtárat. Ebben a könyvtárban több fájl található, például 50baselayout, gcc/config-x86_64-pc-linux-gnu stb., amelyek tartalmazzák a nevükben említett alkalmazásokhoz szükséges változókat.

Például, amikor a gcc telepítve van, egy gcc/config-x86_64-pc-linux-gnu nevű fájl jön létre az ebuild által, amely tartalmazza a következő változók definícióit:

FILE /etc/env.d/gcc/config-x86_64-pc-linux-gnuAlapértelmezett gcc engedélyezett környezeti változók a GCC 13-hoz.
GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/13"
LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/13:/usr/lib/gcc/x86_64-pc-linux-gnu/13/32"
MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/13/man"
INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/13/info"
STDCXX_INCDIR="g++-v13"
CTARGET="x86_64-pc-linux-gnu"
GCC_SPECS=""
MULTIOSDIRS="../lib64:../lib"

Más disztribúciók esetén a rendszergazdáknak meg kell változtatniuk vagy hozzá kell adniuk az ilyen környezeti változó definíciókat az /etc/profile fájlban vagy más helyeken. A Gentoo ezzel szemben megkönnyíti a rendszergazdák (és a Portage) számára a környezeti változók karbantartását és kezelését anélkül, hogy figyelniük kellene a számos fájlra, amelyek környezeti változókat tartalmazhatnak.

Például, amikor a gcc frissítve van, a hozzá tartozó fájl(ok) az /etc/env.d/gcc könyvtárban is frissülnek anélkül, hogy bármilyen adminisztratív beavatkozásra lenne szükség.

Még mindig vannak olyan esetek, amikor a rendszergazdát arra kérik, hogy rendszer szinten állítson be egy bizonyos környezeti változót. Példaként vegyük a http_proxy változót. Az /etc/profile könyvtár alatt található fájl szerkesztése helyett hozzon létre egy /etc/env.d/99local nevű fájlt, és írja bele a definíciót:

FILE /etc/env.d/99localGlobális környezeti változó beállítása
http_proxy="proxy.server.com:8080"

Az összes testre szabott környezeti változóhoz ugyanazt a fájlt használva a rendszergazdák gyors áttekintést kapnak az általuk meghatározott változókról.

env-update

Számos fájl az /etc/env.d könyvtárban hozzáad definíciókat a PATH változóhoz. Ez nem hiba: amikor az env-update parancs végrehajtódik, hozzáfűzi a több definíciót, mielőtt atomikusan frissítené az egyes környezeti változókat, ezáltal megkönnyítve a szotvercsomagok (vagy rendszergazdák) számára, hogy hozzáadják saját környezeti változó beállításaikat anélkül, hogy beavatkoznának a már létező értékekbe.

Az env-update script alfabetikus sorrendben fogja hozzáadni az értékeket az /etc/env.d/ fájlok alapján. A fájlneveknek két tizedesjeggyel kell kezdődniük.

CODE Az env-update által használt frissítési sorrend
09sandbox    50baselayout     51dconf
     +------------+----------------+-----------+
CONFIG_PROTECT_MASK="/etc/sandbox.d /etc/gentoo-release /etc/dconf ..."

A változók összefűzése nem mindig történik meg, csak a következő változókkal: ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH, és PYTHONPATH. Az összes többi változónál az utoljára meghatározott érték (az /etc/env.d/ fájlok ábécé sorrendje alapján) kerül felhasználásra.

Lehetséges további változókat hozzáadni ehhez az összefűzött változók listájához úgy, hogy a változó nevét hozzáadja a COLON_SEPARATED vagy a SPACE_SEPARATED változókhoz (szintén egy /etc/env.d/ fájlon belül).

Amikor az env-update végrehajtásra kerül, a szkript létrehozza az összes környezeti változót és elhelyezi őket az /etc/profile.env fájlban (amit az /etc/profile használ). Ezen kívül kivonja az információt a LDPATH változóból és ezt felhasználva létrehozza az /etc/ld.so.conf fájlt. Ezután futtatja az ldconfig parancsot, hogy újra létrehozza az /etc/ld.so.cache fájlt, amelyet a dinamikus linker használ.

A env-update hatásainak észleléséhez azonnal hajtsa végre a következő parancsot a környezet frissítéséhez. Azok a felhasználók, akik maguk telepítették a Gentoo rendszert, valószínűleg emlékeznek erre a telepítési utasítások alapján:

root #env-update && source /etc/profile
Note
A fenti parancs csak az aktuális terminálban, az új konzolokban és azok gyermekeiben frissíti a változókat. Így, ha a felhasználó X11-ben dolgozik, be kell gépelnie a source /etc/profile parancsot minden újonnan megnyitott terminálban, vagy újra kell indítania az X-et, hogy az összes új terminál betöltse az új változókat. Ha egy bejelentkezés kezelőt használnak, root jogosultsággal kell rendelkezni és újra kell indítani az /etc/init.d/xdm szolgáltatást.
Important
Nem lehetséges shell változókat használni más változók meghatározásakor. Ez azt jelenti, hogy olyan dolgok, mint a FOO="$BAR" (ahol a $BAR egy másik változó) tilosak.

Helyi változók definiálása

Felhasználó specifikus

Nem feltétlenül szükséges egy környezeti változót globálisan meghatározni. Például valaki hozzá szeretné adni a PATH változóhoz a /home/my_user/bin könyvtárat és az aktuális munkakönyvtárat (ahol a felhasználó éppen tartózkodik), de nem akarja, hogy a rendszer többi felhasználója is ezeket a könyvtárakat használja a PATH változóban. Ahhoz, hogy egy környezeti változót helyileg definiáljunk, használhatjuk a ~/.bashrc fájlt (minden interaktív shell munkamenethez) vagy a ~/.bash_profile fájlt (bejelentkezési shell munkamenetekhez):

FILE ~/.bashrcA PATH kiterjesztése helyi használatra
# A colon followed by no directory is treated as the current working directory
PATH="${PATH}:/home/my_user/bin:"

Kilépés/bejelentkezés után a PATH változó frissülni fog.

Munkamenet specifikus

Néha még szigorúbb definíciókra van szükség. Például egy felhasználó szeretné használni a binárisokat egy ideiglenes könyvtárból anélkül, hogy a teljes elérési utat kellene használnia a binárisokhoz, és anélkül, hogy ideiglenesen módosítania kellene a ~/.bashrc fájlt.

Ebben az esetben csak a jelenlegi munkamenetben definiálja a PATH változót az export parancs használatával. Amíg a felhasználó nem jelentkezik ki, a PATH változó az ideiglenes beállításokat fogja használni.

root #export PATH="${PATH}:/home/my_user/tmp/usr/bin"