environ(7) Miscellaneous Information Manual environ(7) NAZWA environ - srodowisko uzytkownika SKLADNIA extern char **environ; OPIS Zmienna environ wskazuje na tablice lancuchow zwana "srodowiskiem". Ostatni wskaznik w tej tablicy musi miec wartosc NULL. Ta tablica lancuchow udostepniana jest procesowi przez funkcje execve(2) podczas uruchamiania nowego programu. Gdy proces potomny jest tworzony przez fork(2), dziedziczy copy ze srodowiska swojego rodzica. Zgodnie z konwencja, lancuch w environ ma postac "nazwa=wartosc". Nazwa jest wrazliwa na wielkosc liter i nie moze zawierac znaku rownosci "=". Wartosc moze byc wszystkim co mozna zapisac jako lancuch tekstowy. Nazwa i wartosc nie moga zawierac bajtu zerowego ("\0"), gdyz sluzy on do zakonczenia lancucha. Zmienne srodowiskowe moga byc umieszczane w srodowisku powloki poleceniem export w sh(1) lub setenv jesli korzysta sie z csh(1). Na poczatkowe srodowisko powloki ma wplyw wiele czynnikow, takich jak definicje z /etc/environment przetwarzane dla wszystkich uzytkownikow przy logowaniu przez pam_env(8) (w systemach korzystajacych z pam(8)). Dodatkowo wiele inicjalizacyjnych skryptow powloki, takich jak systemowy skrypt /etc/profile i skrypty inicjalizacyjne uzytkownikow moga zawierac polecenia dodajace zmienne do srodowiska powloki; prosze zapoznac sie z podrecznikiem systemowym swojej powloki, aby dowiedziec sie wiecej. Powloki wzorowane na powloce Bourne'a obsluguja skladnie NAZWA=wartosc polecenie aby zdefiniowac zmienna srodowiskowa wylacznie w zakresie procesu wykonujacego polecenie. Przed poleceniem mozna podac wiele definicji, oddzielonych bialym znakiem. W srodowisku moga byc rowniez umieszczane argumenty w momencie wykonywania funkcji exec(3). Program napisany w C moze manipulowac srodowiskiem za pomoca funkcji getenv(3), putenv(3), setenv(3) i unsetenv(3). Ponizej przedstawiono liste zmiennych srodowiskowych wystepujacych zwykle w systemie. Jest niekompletna i zawiera wylacznie powszechne zmienne spotykane na co dzien przez przecietnego uzytkownika. Zmienne srodowiskowe przypisane okreslonemu programowi lub funkcji bibliotecznej opisano w rozdziale SRODOWISKO wlasciwego podrecznika systemowego. USER Nazwa zalogowanego uzytkownika (wykorzystywana przez niektore programy wywodzace sie z BSD). Ustawiana przy logowaniu, zob. ponizszy rozdzial UWAGI. LOGNAME Nazwa zalogowanego uzytkownika (wykorzystywana przez niektore programy wywodzace sie z Systemu V). Ustawiana przy logowaniu, zob. ponizszy rozdzial UWAGI. HOME Katalog domowy uzytkownika. Ustawiany przy logowaniu, zob. ponizszy rozdzial UWAGI. LANG Nazwa ustawien jezykowych, jaka ma byc stosowana dla wszystkich kategorii ustawien, jesli nie zostaly narzucone przez zmienna srodowiskowa, taka jak LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC i LC_TIME (zob. locale(7) aby dowiedziec sie wiecej o zmiennych LC_*). PATH Sekwencja przedrostkow katalogow uzywanych przez sh(1) i wiele innych programow przy wyszukiwaniu pliku wykonywalnego podanego jako zwykla nazwa pliku (tj. ktorego sciezka nie zawiera ukosnikow). Przedrostki sa oddzielone dwukropkami (:). Lista przedrostkow jest przeszukiwana od poczatku do konca, poprzez sprawdzenie sciezki zawierajacej przedrostek, ukosnik i nazwe pliku, dopoki nie odnajdzie sie plik wykonywalny Dla zapewnienia kompatybilnosci, przedrostek zerowy (okreslony jako dwa zlaczone dwukropki lub dwukropek rozpoczynajacy lub konczacy) jest interpretowany jako biezacy katalog roboczy. Takie uzycie jest przestarzale, a POSIX zaznacza, ze zgodne z nim aplikacje powinny uzywac jawnej sciezki (np. .) do okreslenia biezacego katalogu roboczego. Podobnie jak PATH, CDPATH jest uzywane przez niektore powloki do poszukiwania katalogu docelowego dla polecenia zmiany katalogu, MANPATH jest uzywane przez man(1) do poszukiwania stron podrecznika itd. PWD Bezwzgledna sciezka do biezacego katalogu roboczego, musi byc czesciowo kanoniczna (bez skladowych . lub ..). SHELL Absolutna sciezka do powloki logowania uzytkownika. Ustawiana przy logowaniu, zob. rozdzial UWAGI ponizej. TERM Rodzaj terminala, dla ktorego system ma przygotowywac wyjscie. PAGER Preferowane przez uzytkownika narzedzie do wyswietlania plikow tekstowych. Poprawny bedzie kazdy lancuch akceptowany jako argument do polecenia sh -c. Jesli PAGER jest pusta lub nieustawiona, aplikacje skorzystaja z domyslnego programu takiego jak less(1) lub more(1). EDITOR/VISUAL Preferowane przez uzytkownika narzedzie do edycji plikow tekstowych. Poprawny bedzie kazdy lancuch akceptowany jako argument do polecenia sh -c. Trzeba zauwazyc, ze obecnosc lub wartosci pewnych zmiennych srodowiska maja wplyw na zachowanie wielu programow i funkcji bibliotecznych. Oto przyklady: o Zmienne LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES, itd. wplywaja na obsluge ustawien jezykowych, zob. catopen(3), gettext(3) i locale(7). o TMPDIR wplywa na prefiks sciezki w nazwach tworzonych przez tempnam(3) i inne funkcje oraz katalog tymczasowy wykorzystywany przez sort(1) i inne programy itd. o LD_LIBRARY_PATH, LD_PRELOAD i inne zmienne LD_* wplywaja na zachowanie programu ladujacego/konsolidatora bibliotek dynamicznych. Zob. tez ld.so(8). o POSIXLY_CORRECT powoduje, ze niektore programy i funkcje biblioteczne przestrzegaja zalecen POSIX. o Na zachowanie malloc(3) wplywaja zmienne MALLOC_*. o Zmienna HOSTALIASES okresla nazwe pliku zawierajacego aliasy, z ktorych ma korzystac gethostbyname(3). o TZ i TZDIR podaja informacje o strefie czasowej wykorzystywana przez tzset(3) i przez funkcje takie jak ctime(3), localtime(3), mktime(3), strftime(3). Zobacz takze tzselect(8). o TERMCAP podaje informacje o tym, jak adresowac okreslony terminal (lub podaje nazwe pliku zawierajacego te informacje). o COLUMNS i LINES mowia aplikacjom o rozmiarze okna, ewentualnie narzucajac wartosci inne niz rzeczywiste rozmiary. o PRINTER lub LPDEST moga okreslac drukarke, ktora powinna byc uzywana. Zobacz lpr(1). UWAGI Historycznie i w zgodnosci ze standardem, environ musi byc zadeklarowane w programie uzytkownika. Jednak dla wygody programisty environ jest (niestandardowo) deklarowane w naglowku pliku jesli zdefiniowane jest testowe makro _GNU_SOURCE (zob. feature_test_macros(7)). Operacje PR_SET_MM_ENV_START i PR_SET_MM_ENV_END prctl(2) moga posluzyc do kontroli polozenia srodowiska procesu. Zmienne HOME, LOGNAME, SHELL i USER sa ustawiane gdy dochodzi do zmiany uzytkownika, za pomoca interfejsu zarzadzania sesja, zwykle przez program typu login(1), na takiego z bazy danych uzytkownikow (np. passwd(5)). Przelaczenie na uzytkownika root za pomoca su(1) moze skutkowac mieszanym srodowiskiem, gdy LOGNAME i USER pochodza jeszcze od starego uzytkownika; zob. strone podrecznika systemowego su(1). USTERKI Oczywiscie istnieje tu ryzyko naruszenia bezpieczenstwa. Wiele polecen systemowych zostalo oszukanych w celu wyrzadzenia szkody przez uzytkownika, ktory nadal nietypowe wartosci zmiennym IFS lub LD_LIBRARY_PATH. Istnieje rowniez ryzyko skazenia przestrzeni nazw. Programy takie jak make i autoconf pozwalaja na nadpisywanie domyslnych nazw programow narzedziowych poprzez srodowisko zawierajace zmienne o nazwach podobnych do nazw tych programow, ale skladajacych sie wylacznie z wielkich liter. Zatem uzywa sie CC do okreslenia pozadanego kompilatora C (i podobnie MAKE, AR, AS, FC, LD, LEX, RM, YACC itd.). Jednakze, w niektorych tradycyjnych zastosowaniach takie zmienne srodowiskowe podaja opcje dla programow zamiast sciezki. Zatem mamy MORE i LESS. Takie zastosowanie jest traktowane jako bledne i nalezy go unikac w nowych programach. ZOBACZ TAKZE 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) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. environ(7)