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.