Gentoo Logo

1.  Variabile de Mediu?

Ce sunt ele

O variabilă de mediu este un obiect cu nume propriu, care conţine informaţii folosite de una sau mai multe aplicaţii. Mulţi utilizatori (în special cei noi sistemului Linux) consideră asta ca fiind un pic cam ciudat, sau chiar de nestăpânit. Acest concept este greşit: folosind o variabilă de mediu, se poate schimba cu uşurinţă configuraţia uneia sau mai multor aplicaţii.

Example Importante

Următorul tabel listează un număr de variabile folosite de sistemul Linux şi descrie modul lor de folosire. Ca exemplu, sunt prezentate câteva valori pentru aceste variabile după tabel.

Variabilă Descriere
PATH Această variabilă conţine o listă de directoare, separate prin virgulă, unde sistemul dumneavoastră caută fişierele executabile. Dacă introduceţi numele unui executabil (cum ar fi ls, rc-update sau emerge) dar acesta nu se află într-un director specificat, sistemul dumneavoastră nu-l va executa (decât dacă introduceţi locaţia completă, precum /bin/ls).
ROOTPATH Această variabilă este asemănătoare comenzii PATH, doar că listează directoarele ce trebuie verificate atunci când user-ul 'root' introduce o comandă.
LDPATH Această variabilă conţine o listă de directoare, separate prin virgulă, unde linker-ul dinamic caută pentru a găsi o librărie.
MANPATH Această variabilă conţine o listă de directoare, separate prin virgulă, unde comanda man caută paginile de manual
INFODIR Această variabilă conţine o listă de directoare, separate prin virgulă, unde comanda info caută paginile info.
PAGER Această variabilă conţine calea către programul folosit pentru a lista conţinutul fişierelor (cum ar fi less sau more)
EDITOR Această variabilă conţine calea către programul folosit pentru a schimba conţinutul fişierelor (cum ar fi nano sau vi)
KDEDIRS Această variabilă conţine o listă de directoare, separate prin virgulă, ce conţin materiale specifice KDE.
CLASSPATH Această variabilă conţine o listă de directoare, separate prin virgulă, ce conţin clase Java.
CONFIG_PROTECT Această variabilă conţine o listă delimitată de caracterul spaţiu a directoarelor ce trebuie protejate de Portage în timpul actualizărilor.
CONFIG_PROTECT_MASK Această variabilă conţine o listă delimitată de caracterul spaţiu a directoarelor ce nu trebuie protejate de Portage în timpul actulizărilor.

Mai jos veţi găsi un exemplu de definire pentru toate variabilele:

Cod 1.1: Definiţii exemplu

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.  Definirea Variabilelor Globale

Directorul /etc/env.d

Pentru a centraliza definiţiile acestor variabile, Gentoo introduce directorul /etc/env.d. În acest director veţi găsi unele fişiere, precum 00basic, 05gcc, etc. care conţin variabilele necesare pentru aplicaţiile menţionate în nume.

De exemplu, când aţi instalat gcc, un fişier numit 05gcc a fost creat de către ebuild şi conţine definiţiile următoarelor variabile:

Cod 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"

Alte distribuţii vă spun să schimbaţi sau să definiţi astfel de variabile de mediu în /etc/profile sau alte locaţii. Gentoo, pe de altă parte, uşurează (atât pentru dumneavoastră cât şi pentru portage) mentenanţa acestor variabile fără a trebui să acordaţi atenţie fişierelor numeroase ce pot conţine variabile de mediu.

De exemplu, când gcc este actualizat, fişierul /etc/env.d/05gcc este actualizat fără a necesita interacţiunea cu utilizatorul.

Acesta nu este un beneficiu numai pentru Portage, dar şi pentru dumneavoastră, ca utilizator. Ocazional, este posibil să vi se ceară să setaţi o anumită variabilă de mediu globală pentru tot sistemul. Ca exemplu, luăm variabila http_proxy. În loc să vă încurcaţi cu /etc/profile, puteţi crea un fişier nou (/etc/env.d/99local) unde să definiţi variabilele de care aveţi nevoie:

Cod 1.1: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Prin folosirea unui singur fişier în care păstraţi toate variabilele dumneavoastră, puteţi avea acces rapid la variabilele definite de dumneavoastră.

Script-ul env-update

Mai multe fişiere din /etc/env.d definesc variabila PATH. Aceasta nu este greşit: când rulaţi env-update, va adăuga un număr de definiţii înainte de a actualizarea variabilele de mediu, facilitând pachetelor (sau utilizatorilor) adăugarea propriilor variabile fără alterarea valorilor deja existente.

Script-ul env-update va adăuga valorile în ordine alfabetică, conform fişierelor din /etc/env.d. Fişierele trebuie să înceapă cu două cifre zecimale.

Cod 1.1: Ordinea actualizării utilizată de env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Concatenarea variabilelor nu se întâmplă în toate cazurile, ci doar pentru următoarele variabile: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH şi PRELINK_PATH_MASK. Pentru toate celelalte variabile, ultima valoare definită (în ordinea alfabetică a fişierelor din /etc/env.d) este cea utilizată.

Când rulaţi env-update, script-ul va genera toate variabilele de mediu, şi le va plasa în /etc/profile.env (care este utilizat de /etc/profile). De asemenea, va extrage informaţiile din variabila LDPATH şi le va folosi pentru a crea fişierul/etc/ld.so.conf. Apoi, va rula ldconfig pentru a recrea /etc/ld.so.cache, folosit de linker-ul dinamic.

Dacă doriţi să observaţi consecinţele env-update imediat după ce îl rulaţi, executaţi următoarea comandă pentru a actualiza mediul. Utilizatorii care au instalat ei înşişi Gentoo, îşi vor aminti de aceste instrucţiuni din timpul instalării:

Cod 1.1: Actualizarea mediului

# env-update && source /etc/profile

Notă: Comanda de mai sus actualizează doar variabilele din terminalul curent, consolele noi şi procesele fiu ale acestora. Astfel, dacă lucraţi în X11, va trebui, fie să tastaţi source /etc/profile în fiecare terminal nou pe care-l deschideţi, sau să reporniţi aplicaţia X pentru ca toate terminalele să încarce noile variabile. Dacă utilizaţi un manager de login, trebuie să tastaţi ca root /etc/init.d/xdm restart. Dacă nu, va trebui să efectuaţi logout şi apoi să vă autentificaţi din nou pentru ca X să poată crea procese fiu cu valorile noilor variabile.

1.  Definirea Variabilelor Local

Specific User-ilor

Nu întotdeauna este dorită definirea globală a variabilelor de mediu. De exemplu, s-ar putea să doriţi să adăugaţi /home/my_user/bin, precum şi directorul curent de lucru (directorul în care vă aflaţi) la variabila PATH, dar nu doriţi ca toţi user-ii sistemului să o aibă definită în variabila lor PATH. Dacă doriţi să definiţi o variabilă de mediu local trebuie să folosiţi ~/.bashrc sau ~/.bash_profile:

Cod 1.1: Extinderea variabilei PATH pentru folosire locală în ~/.bashrc

(Două puncte urmate de nici un director sunt tratate ca directorul curent de lucru
PATH="${PATH}:/home/my_user/bin:"

Când efectuaţi din nou acţiunea de login, variabila dumneavoastră PATH va fi actualizată.

Specific Sesiunii

Uneori, sunt necesare definiţii şi mai stricte. Poate doriţi să puteţi folosi executabilele dintr-un director temporar, creat de dumneavoastră (fără a folosi calea către executabile sau prin editarea ~/.bashrc) pentru timpul scurt în care aveţi nevoie de ele.

În acest caz, puteţi defini variabila PATH în sesiunea curentă folosind comanda export. Cât timp nu efectuaţi log out, variabila PATH va folosi aceste setări temporare.

Cod 1.1: Definirea unei variabile de mediu specifice sesiunii

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

Actualizat la 28 Septembrie 2005

Versiunea originală a acestui document a fost actualizată ultima dată la 18 Mai 2007

Donate to support our development efforts.

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