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.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.
Dalsze nazwy mogą być umieszczane w środowisku za pomocą polecenia export i "nazwa=wartość" w przypadku stosowania powłoki typu sh(1) lub polecenia setenv w przypadku powłoki typu csh(1). 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).
Trzeba zauważyć, że obecność lub wartości pewnych zmiennych środowiska mają wpływ na zachowanie wielu programów i funkcji bibliotecznych. Przypadkowy zbiór:
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 tmpnam(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).
I tak dalej.
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.
O STRONIE
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Przemek Borys (PTM) <[email protected]>, Robert Luberda <[email protected]> i Michał Kułach <[email protected]>.Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.71 oryginału.