Gentoo Logo

Upozornění : Tento dokument již neplatí a není udržován.


[ << ] [ < ] [ Domů ] [ > ] [ >> ]


5. Proměnné prostředí

Obsah:

5.a. 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"

5.b. 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 2.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 2.2: /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 2.3: 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 2.4: 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.

5.c. 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 3.1: Rozšíření PATH pro jedonoho uživatele - ~/.bashrc

(dvojtečka na konci použije aktuální adresář)
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 3.2: Definice proměnné prostředí pro současnou relaci

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

[ << ] [ < ] [ Domů ] [ > ] [ >> ]


Tisk

Zobrazit všechny

Aktualizace: 30. srpen 2006

Poslední aktualizace původni verze tohoto dokumentu: 1. červen 2014

Shrnutí: S Gentoo můžete jednoduše spravovat proměnné prostředí na Vašem systému. Vysvětlíme, jak s nimi pracovat, a podáme popis těch nejpoužívanějších.

Sven Vermeulen
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 vývojář

Tavis Ormandy
Gentoo Alpha vývojář

Jason Huebel
Gentoo AMD64 vývojář

Guy Martin
Gentoo HPPA vývojář

Pieter Van den Abeele
Gentoo PPC vývojář

Joe Kallar
Gentoo SPARC vývojář

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Korektor

Gerald J. Normandin Jr.
Korektor

Donnie Berkholz
Korektor

Ken Nowack
Korektor

Lars Weiler
Přispěvatel

Jan Kundrát
Překladatel

Jan Nárovec
Překladatel

Martin Tesař
Překladatel

Mirek Dvořák
Korektor

Adam Kudrna
Korektor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.