NAZWA
environ - środowisko użytkownika
SKŁADNIA
extern char **environ;
OPIS
Zmienna environ wskazuje na tablicę łańcuchów zwaną "środowiskiem". Ostatni wskaźnik w tej tablicy musi mieć wartość NULL. (Zmienna ta musi być zadeklarowana w programie użytkownika, jednakże jest ona zadeklarowana w pliku nagłówkowym unistd.h, w przypadku gdy ustawiono testowe makro _GNU_SOURCE. Ta tablica łańcuchów udostępniana jest procesowi przez funkcję exec(3) podczas jego uruchamiania. Gdy proces potomny jest tworzony przez fork(2), dziedziczy copy ze środowiska swojego rodzica.
Zgodnie z konwencją łańcuchy znaków w tablicy environ mają postać "nazwa=wartość". Typowe przykłady to:
USER |
Nazwa zalogowanego użytkownika (wykorzystywana przez niektóre programy wywodzące się z BSD). |
LOGNAME
Nazwa zalogowanego użytkownika (wykorzystywana przez niektóre programy wywodzące się z Systemu V).
HOME |
Katalog domowy użytkownika, zmienna ustawiana przez program login(1) na podstawie informacji z pliku passwd(5). | ||
LANG |
Nazwa ustawień językowych, jaka ma być stosowana dla wszystkich kategorii ustawień, jeśli nie zostały narzucone przez zmienną środowiskową, taką jak LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC i LC_TIME (zob. locale(7) aby dowiedzieć się więcej o zmiennych LC_*). | ||
PATH |
Sekwencja katalogów, które sh(1) oraz wiele innych programów przeszukuje w poszukiwaniu plików, których nazwa nie zawiera pełnej ścieżki dostępu. Poszczególne katalogi są rozdzielane znakiem ":" (podobnie, CDPATH jest używane przez niektóre powłoki do poszukiwania katalogu docelowego dla polecenia zmiany katalogu, a MANPATH jest używane przez man(1) do poszukiwania stron podręcznika itd.). | ||
PWD |
Bieżący katalog roboczy. Ustawiane przez niektóre powłoki. | ||
SHELL |
Nazwa powłoki zgłoszeniowej użytkownika. | ||
TERM |
Rodzaj terminala, dla którego system ma przygotowywać wyjście. | ||
PAGER |
Wybrane przez użytkownika narzędzie do wyświetlania plików tekstowych. |
EDITOR/VISUAL
Wybrane przez użytkownika narzędzie do edycji plików tekstowych.
Nazwy mogą być umieszczane w środowisku powłoki poleceniem export w sh(1) lub setenv jeśli korzysta się z csh(1).
Na początkowe środowisko powłoki ma wpływ wiele czynników, takich jak definicje z /etc/environment przetwarzane dla wszystkich użytkowników przy logowaniu przez pam_env(8) (w systemach korzystających z pam(8)). Dodatkowo wiele inicjalizacyjnych skryptów powłoki, takich jak systemowy skrypt /etc/profile i skrypty inicjalizacyjne użytkowników mogą zawierają polecenia dodające zmienne do środowiska powłoki; proszę zapoznać się z podręcznikiem systemowym swojej powłoki, aby dowiedzieć się więcej.
Powłoki wzorowane na powłoce Bourne’a obsługują składnię
NAZWA=wartość polecenie
aby zdefiniować zmienną środowiskową wyłącznie w zakresie procesu wykonującego polecenie. Przed poleceniem można podać wiele definicji, oddzielonych białym znakiem.
W środowisku mogą być również umieszczane argumenty w momencie wykonywania funkcji exec(3). Program napisany w C może manipulować środowiskiem za pomocą funkcji getenv(3), putenv(3), setenv(3) i unsetenv(3).
Note that the behavior of many programs and library routines is influenced by the presence or value of certain environment variables. Examples include the following:
* |
Zmienne LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES, itd. wpływają na obsługę ustawień językowych, zob. catopen(3), gettext(3) i locale(7). | ||
* |
TMPDIR influences the path prefix of names created by tempnam(3) and other routines, and the temporary directory used by sort(1) and other programs. | ||
* |
LD_LIBRARY_PATH, LD_PRELOAD, and other LD_* variables influence the behavior of the dynamic loader/linker. | ||
* |
POSIXLY_CORRECT powoduje, że niektóre programy i funkcje biblioteczne przestrzegają zaleceń POSIX. | ||
* |
Na zachowanie malloc(3) wpływają zmienne MALLOC_*. | ||
* |
Zmienna HOSTALIASES określa nazwę pliku zawierającego aliasy, z których ma korzystać gethostbyname(3). | ||
* |
TZ i TZDIR podają informacje o strefie czasowej wykorzystywaną przez tzset(3) i przez funkcje takie jak ctime(3), localtime(3), mktime(3), strftime(3). Zobacz także tzselect(8). | ||
* |
TERMCAP podaje informacje o tym, jak adresować określony terminal (lub podaje nazwę pliku zawierającego te informacje). | ||
* |
COLUMNS i LINES mówią aplikacjom o rozmiarze okna, ewentualnie narzucając wartości inne niż rzeczywiste rozmiary. | ||
* |
PRINTER lub LPDEST mogą określać drukarkę, która powinna być używana. Zobacz lpr(1). |
UWAGI
The prctl(2) PR_SET_MM_ENV_START and PR_SET_MM_ENV_END operations can be used to control the location of the process’s environment.
BŁĘDY
Oczywiście istnieje tu ryzyko naruszenia bezpieczeństwa. Wiele poleceń systemowych zostało oszukanych w celu wyrządzenia szkody przez użytkownika, który nadał nietypowe wartości zmiennym IFS lub LD_LIBRARY_PATH.
Istnieje również ryzyko skażenia przestrzeni nazw. Programy takie jak make i autoconf pozwalają na nadpisywanie domyślnych nazw programów narzędziowych poprzez środowisko zawierające zmienne o nazwach podobnych do nazw tych programów, ale składających się wyłącznie z wielkich liter. Zatem używa się CC do określenia pożądanego kompilatora C (i podobnie MAKE, AR, AS, FC, LD, LEX, RM, YACC itd.). Jednakże, w niektórych tradycyjnych zastosowaniach takie zmienne środowiskowe podają opcje dla programów zamiast ścieżki. Zatem mamy MORE, LESS i GZIP. Takie zastosowanie jest traktowane jako błędne i należy go unikać w nowych programach. Autorzy programu gzip powinni rozważyć zmianę nazwy swojej opcji na GZIP_OPT.
ZOBACZ TAKŻE
bash(1), csh(1), env(1), login(1), printenv(1), sh(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)
O STRONIE
Angielska wersja tej strony pochodzi z wydania 5.07 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys [AT] dione.pl>, Robert Luberda <robert [AT] debian.org> i Michał Kułach <michal.kulach [AT] gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres <manpages-pl-list [AT] lists.net>.