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 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.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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.