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.
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.
ZOBACZ TAKŻE¶
env(1),
bash(1),
csh(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)
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) <pborys@dione.ids.pl>, Robert Luberda
<robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>.
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.