environ(7) Miscellaneous Information Manual environ(7)

environ - mediul utilizatorului

extern char **environ;

Variabila environ indică o matrice de indicatoare la șiruri de caractere numită „mediu”. Ultimul indicator din această matrice are valoarea NULL. Această matrice de șiruri de caractere este pusă la dispoziția procesului de către apelul execve(2) atunci când este inițiat un nou program. Atunci când un proces copil este creat prin fork(2), acesta moștenește o copie a mediului părintelui său.

Prin convenție, șirurile din environ au forma „nume=valoare”. Numele este sensibil la majuscule și nu poate conține caracterul „=”. Valoarea poate fi orice lucru care poate fi reprezentat ca șir de caractere. Numele și valoarea nu pot conține un octet nul încorporat („\0”), deoarece se presupune că acesta încheie șirul.

Variabilele de mediu pot fi plasate în mediul shell-ului prin comanda export din sh(1) sau prin comanda setenv dacă utilizați csh(1).

Mediul inițial al shell-ului este populat în diverse moduri, cum ar fi definițiile din /etc/environment care sunt procesate de pam_env(8) pentru toți utilizatorii la momentul autentificării (pe sistemele care utilizează pam(8)). În plus, diverse scripturi de inițializare a shell-ului, cum ar fi scriptul /etc/profile la nivel de sistem și scriptul de inițializare pentru fiecare utilizator, pot include comenzi care adaugă variabile în mediul shell-ului; consultați pagina de manual a shell-ului preferat pentru detalii.

Shell-urile de tip Bourne acceptă sintaxa


NUME=valoare comanda

pentru a crea o definiție a unei variabile de mediu numai în cadrul procesului care execută comanda. Mai multe definiții de variabile, separate prin spațiu alb, pot preceda comanda.

Argumentele pot fi, de asemenea, plasate în mediu în momentul în care se execută un exec(3). Un program C își poate manipula mediul cu ajutorul funcțiilor getenv(3), putenv(3), setenv(3) și unsetenv(3).

În cele ce urmează este prezentată o listă de variabile de mediu care apar de obicei într-un sistem. Această listă este incompletă și include doar variabilele obișnuite întâlnite de către utilizatorii obișnuiți în rutina lor zilnică. Variabilele de mediu specifice unui anumit program sau unei anumite funcții de bibliotecă sunt documentate în secțiunea MEDIU din paginile de manual ale acestora.

Numele utilizatorului conectat (utilizat de unele programe derivate din BSD). Se stabilește în momentul conectării, a se vedea secțiunea NOTE de mai jos.
Numele utilizatorului conectat (utilizat de unele programe derivate din System-V). Se stabilește în momentul conectării, a se vedea secțiunea NOTE de mai jos.
Directorul de conectare al unui utilizator. Se stabilește în momentul conectării, a se vedea secțiunea NOTE de mai jos.
Numele unei regiuni care urmează să fie utilizată pentru categoriile locale atunci când nu este suprascrisă de LC_ALL sau de variabile de mediu mai specifice, cum ar fi LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC și LC_TIME (a se vedea locale(7) pentru mai multe detalii despre variabilele de mediu LC_*).
Secvența de prefixe de directoare pe care sh(1) și multe alte programe o utilizează atunci când caută un fișier executabil specificat ca nume de fișier simplu (adică un nume de rută care nu conține bare oblice). Prefixele sunt separate prin două puncte (:). Lista de prefixe este căutată de la început până la sfârșit, prin verificarea numelui de rută format prin concatenarea unui prefix, a unei bare oblice și a numelui de fișier, până când se găsește un fișier cu permisiunea de execuție.
Ca o caracteristică moștenită, un prefix de lungime zero (specificat sub forma a două puncte de dialog adiacente sau a două puncte de dialog inițiale sau finale) este interpretat ca fiind directorul de lucru curent. Cu toate acestea, utilizarea acestei caracteristici este depreciată, iar POSIX menționează că o aplicație conformă trebuie să utilizeze un nume de rută explicit (de exemplu, .) pentru a specifica directorul de lucru curent.
În mod analog cu PATH, există CDPATH utilizată de unele shell-uri pentru a găsi ținta unei comenzi de modificare a directorului, MANPATH utilizată de man(1) pentru a găsi paginile de manual, și așa mai departe.
Ruta absolută către directorul de lucru curent; trebuie să fie parțial canonică (fără componente . sau ..).
Numele de rută absolută al shell-ului de autentificare al utilizatorului. Se stabilește în momentul autentificării, a se vedea secțiunea NOTE de mai jos.
Tipul de terminal pentru care trebuie pregătită ieșirea.
Aplicația preferată de utilizator pentru afișarea fișierelor text. Orice șir de caractere acceptabil ca operand de șir de comandă pentru comanda sh -c este valabil. Dacă PAGER este null sau nu este definită, atunci aplicațiile care lansează un paginator vor trece implicit la un program precum less(1) sau more(1).
Aplicația preferată de utilizator pentru editarea fișierelor text. Orice șir de caractere acceptabil ca operand șir-de-comandă pentru comanda sh -c este valabil.

Rețineți că comportamentul multor programe și rutine de bibliotecă este influențat de prezența sau valoarea anumitor variabile de mediu. Printre exemple se numără următoarele:

Variabilele LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES și așa mai departe influențează gestionarea configurației regionale; a se vedea catopen(3), gettext(3) și locale(7).
TMPDIR influențează prefixul rutei fișierelor create de tempnam(3) și de alte rutine, precum și directorul temporar utilizat de sort(1) și de alte programe.
LD_LIBRARY_PATH, LD_PRELOAD și alte variabile LD_* influențează comportamentul încărcătorului/editorului de legături dinamice. A se vedea, de asemenea, ld.so(8).
POSIXLY_CORRECT face ca anumite programe și rutine de bibliotecă să respecte prescripțiile POSIX.
Comportamentul lui malloc(3) este influențat de variabilele MALLOC_*.
Variabila HOSTALIASES indică numele unui fișier care conține pseudonimele care urmează să fie utilizate cu gethostbyname(3).
TZ și TZDIR oferă informații despre fusul orar utilizate de tzset(3) și, prin intermediul acestuia, de funcții precum ctime(3), localtime(3), mktime(3), strftime(3). A se vedea, de asemenea, tzselect(8).
TERMCAP oferă informații cu privire la modul de adresare a unui anumit terminal (sau oferă numele unui fișier care conține astfel de informații).
COLUMNS și LINES informează aplicațiile cu privire la dimensiunea ferestrei, eventual înlocuind dimensiunea actuală.
PRINTER sau LPDEST poate specifica imprimanta ce se dorește a fi utilizată. A se vedea lpr(1).

Din punct de vedere istoric și standard, environ trebuie să fie declarat în programul utilizatorului. Cu toate acestea, ca o comoditate (nestandardizată) pentru programator, environ este declarat în fișierul antet <unistd.h> dacă este definită macrocomanda de testare a caracteristicilor _GNU_SOURCE (a se vedea feature_test_macros(7)).

Operațiile prctl(2) PR_SET_MM_ENV_START și PR_SET_MM_ENV_END pot fi utilizate pentru a controla locația mediului procesului.

Variabilele HOME, LOGNAME, SHELL și USER sunt definite atunci când utilizatorul este schimbat prin intermediul unei interfețe de gestionare a sesiunilor, de obicei de către un program precum login(1) dintr-o bază de date a utilizatorilor (precum passwd(5)). Trecerea la utilizatorul root folosind su(1) poate avea ca rezultat un mediu mixt în care LOGNAME și USER sunt păstrate de la vechiul utilizator; consultați pagina de manual su(1).

În mod clar, există un risc de securitate în acest caz. Multe comenzi de sistem au fost păcălite de un utilizator care a specificat valori neobișnuite pentru IFS sau LD_LIBRARY_PATH.

Există, de asemenea, riscul de poluare a spațiului de nume. Programe precum make și autoconf permit înlocuirea numelor de utilități implicite din mediu cu variabile cu nume similare, scrise cu majuscule. Astfel, se folosește CC pentru a selecta compilatorul C dorit (și în mod similar MAKE, AR, AS, FC, LD, LEX, RM, YACC etc.). Cu toate acestea, în unele utilizări tradiționale, o astfel de variabilă de mediu oferă opțiuni pentru program în loc de un nume de rută. Astfel, avem MORE și LESS. O astfel de utilizare este considerată eronată și trebuie evitată în programele noi.

bash(1), csh(1), env(1), login(1), printenv(1), sh(1), su(1), tcsh(1), execve(2), clearenv(3), exec(3), getenv(3), putenv(3), setenv(3), unsetenv(3), locale(7), ld.so(8), pam_env(8)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

2 mai 2024 Pagini de manual de Linux 6.8