table of contents
- bullseye 1:4.10.0-1
- bullseye-backports 1:4.18.1-1~bpo11+1
ENVIRON(7) | Podręcznik programisty Linuksa | ENVIRON(7) |
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 wpływa na prefiks ścieżki w nazwach tworzonych przez tempnam(3) i inne funkcje oraz katalog tymczasowy wykorzystywany przez sort(1) i inne programy itd.
- LD_LIBRARY_PATH, LD_PRELOAD i inne zmienne LD_* wpływają na zachowanie programu ładującego/konsolidatora bibliotek dynamicznych.
- 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.10 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@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@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@lists.sourceforge.net.
13 sierpnia 2020 r. | Linux |