|
1.
Proměnné prostředí?
Co to je
Proměnná prostředí je pojmenovaný objekt, který uchovává nějakou informaci
používanou jedno nebo více aplikacemi. Mnoho uživatelů (hlavně ti, kdo
s Linuxem nepracují déle) tato nastavení považují za divné nebo nesnadno
udržovatelné, není to však pravda: použití proměnných prostředí se dá
ve skutečnosti snadno ovlivnit nastavení celé řady aplikací jedinou změnou.
Důležité příklady
V následující tabulce naleznete několik důležitých proměnných prostředí,
které jsou použity na linuxových systémech, včetně jejich popisu. Ukázkové
hodnoty jsou popsány níže.
| Proměnná |
Popis |
| PATH |
Tato proměnná obsahuje dvojtečkou oddělený seznam adresářů, ve kterých
systém vyhledává spustitelné soubory. Zadáte-li jméno příkazu (jako
například ls, rc-update nebo emerge), avšak tento není
nalezen v žádném z těchto adresářů, systém jej nebude moci spustit
a budete muset použít plnou cestu (například /bin/ls).
|
| ROOTPATH |
Slouží ke stejné funkci jako PATH, avšak obsahuje seznam
procházených adresářů pro uživatele root.
|
| LDPATH |
Tato proměnná obsahuje dvojtečkou oddělený seznam adresářů procházených
dynamickým linkerem při hledání knihovny.
|
| MANPATH |
Dvojtečkou oddělený seznam adresářů, ve kterých příkaz man
vyhledává manuálové stránky.
|
| INFODIR |
Dvojtečkou oddělený seznam adresářů, ve kterých příkaz info
vyhledává informační stránky.
|
| PAGER |
Cesta k programu, který se používá pro výpis obsahu souborů (například
less nebo more).
|
| EDITOR |
Tato proměnná určuje cestu k programu, který se používá pro editaci
obsahu souborů (například nano nebo vi).
|
| KDEDIRS |
Obsahuje dvojtečkou oddělený seznam adresářů obsahujících data specifická
pro KDE.
|
| CLASSPATH |
Dvojtečkou oddělený seznam adresářů obsahujících Javové třídy (class).
|
| CONFIG_PROTECT |
Tato proměnná obsahuje mezerou oddělený seznam adresářů, které by
Portage mělo při aktualizacích chránit.
|
| CONFIG_PROTECT_MASK |
Tato proměnná obsahuje mezerou oddělený seznam adresářů, které by
Portage nemělo chránit během aktualizací.
|
Následují ukázky definic všech výše zmíněných proměnných:
Výpis kódu 1.1: Ukázkovy proměnných |
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"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
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"
CONFIG_PROTECT_MASK="/etc/gconf"
|
1.
Globální definice proměnných
Adresář /etc/env.d
Adresář /etc/env.d v Gentoo slouží k centralizaci správy
proměnných prostředí; naleznete v něm mnoho souborů, jako například
00basic, 05gcc atd., které obsahují definice
proměnných pro aplikace, po kterých jsou pojmenovány.
Například při instalaci gcc byl ebuildem vytvořen soubor
05gcc, který obsahuje definice těchto proměnných:
Výpis kódu 1.1: /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Jiné distribuce Vás žádají o změnu nebo přidávání proměnných prostředí do
souboru /etc/profile nebo podobných, avšak Gentoo Vám (a systému
Portage) jejich správu usnadní, neboť vše potřebné naleznete v jednom
adresáři.
Například během aktualizace gcc dojde ke změně souboru
/etc/env.d/05gcc bez nutnosti ručního zásahu uživatele.
Toto není výhoda jenom pro Portage, ale i pro Vás jakožto uživatele. Občas
můžete potřebovat nastavit nějakou proměnnou pro celý systém, například
proměnnou http_proxy. Nemusíte se probírat obrovským souborem
/etc/profile, ale stačí, abyste vytvořili nový soubor
(/etc/env.d/99local) a do něj zadali potřebné definice:
Výpis kódu 1.1: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
Použitím jednoho souboru pro všechny Vaše proměnné navíc získáte přehled o těch
proměnných, které jste zadali sami.
Skript env-update
Proměnnou PATH definuje v adresáři /etc/env.d více
souborů. Není to však omyl - spuštění env-update spojí tyto definice
dohromady před samotnou aktualizací proměnných. Proto je snadné, aby jednotlivé
balíčky (a nebo uživatelé) přidávaly vlastní nastavení bez vzájemné
interference.
Skript env-update spojí definice proměnných ze souborů
z adresáře /etc/env.d; zpracovávány jsou pouze ty soubory,
jejichž jména začínají dvěma číslicemi.
Výpis kódu 1.1: Pořadí aktualizací pro env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Toto spojování obsahu proměnných však neproběhne vždy, avšak pouze pro tyto
proměnné: KDEDIRS, PATH, CLASSPATH, LDPATH,
MANPATH, INFODIR, INFOPATH, ROOTPATH,
CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH a
PRELINK_PATH_MASK. Pro všechny ostatní proměnné platí, že se
použije naposledy definovaná hodnota (abecední pořadí souborů uvnitř
/etc/env.d).
Spuštění skriptu env-update vytvoří proměnné prostředí a uloží je do
/etc/profile.env, který je dále používán souborem
/etc/profile. Zároveň použije informace z proměnné
LDPATH a použije je k vytvoření souboru
/etc/ld.so.cache sloužícího dynamickému linkeru.
Chcete-li ihned použít výsledky env-update ihned po jeho spuštění,
spusťte následující příkaz. Uživatelé, kteří Gentoo instalovali sami, si jej
pravděpodobně pamatují z instalace:
Výpis kódu 1.1: Aktualizace prostředí |
# env-update && source /etc/profile
|
Poznámka:
Výše zmíněný příkaz pouze aktualizuje proměnné v aktuálním terminálu,
nově otevřených konzolích a jejich potomcích. Proto pokud pracujete
v X11, buď budete muset spustit source /etc/profile v každém
terminálu který otevřete nebo restartovat X, aby se změny promítly. Používáte-li
login manager (grafického správce přihlašování), spusťte jako root
/etc/init.d/xdm restart; pokud jej nepoužíváte, odhlaste se a znovu se
nalogujte.
|
1.
Lokální definice proměnných
Pro jednoho uživatele
Ne vždy chcete definovat proměnnou prostředí globálně pro celý systém. Můžete
například chtít přidat /home/uzivatel/bin a aktuální adresář (tj.
ten, ve kterém se právě nacházíte) do proměnné PATH, avšak ne pro
všechny uživatele. V takovém případě byste měli použít
~/.bashrc nebo ~/.bash_profile:
Výpis kódu 1.1: Rozšíření PATH pro jedonoho uživatele - ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Až se znovu přihlásíte, proměnná PATH bude změněna.
Pro aktuální relaci
Někdy můžete chtít použít programy z dočasnéhop adresáře bez jakéhokoli
editování souborů nebo zadávání plné cesty před každým příkazem, protože o
změnu stojíte pouze na krátkou dobu.
V takovém případě stačí definovat proměnnou PATH pouze pro současnou
relaci příkazem export. Tyto dočasné změny proměnné budou funkční až do
odhlášení.
Výpis kódu 1.1: Definice proměnné prostředí pro současnou relaci |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
|