| 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.
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:
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.
| 15 iunie 2024 | Pagini de manual de Linux 6.9.1 |