table of contents
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 plik ten pochodzi z libc4 lub libc5 oraz w przypadku gdy pochodzi on z glibc i zdefiniowano _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ą LC_ALL lub inne bardziej szczegółowe zmienne, jak LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME, por. locale(5).
- 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, por. locale(5).
TMPDIR wpływa na prefiks ścieżki w nazwach tworzonych przez tmpnam(3) i inne funkcje, 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.
ZOBACZ TAKŻE¶
bash(1), csh(1), login(1), sh(1), tcsh(1), execve(2), clearenv(3), exec(3), getenv(3), putenv(3), setenv(3), unsetenv(3), locale(5)
O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.40 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów 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) <pborys@dione.ids.pl> i Robert Luberda <robert@debian.org>.
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.40 oryginału.
2009-07-25 | Linux |