Scroll to navigation

ENVIRON(7) Linux - příručka programátora ENVIRON(7)

JMÉNO

environ - uživatelské prostředí

POUŽITÍ

extern char **environ;

POPIS

Proměnná environ odkazuje na pole řetězců nazývané "prostředí" (environment). (Tato proměnná musí být deklarována v uživatelském programu. Pouze v případě, že hlavičkové soubory pocházejí z libc4 nebo libc5, anebo pocházejí z glibc a zároveň je definováno _GNU_SOURCE , je proměnná deklarována v hlavičkovém souboru <unistd.h>). Toto pole řetězců je zpřístupněno procesu voláním exec(3) , které spustilo proces. Podle konvence mají tyto řetězce tvar "jméno=hodnota". Obvyklé případy:

Jméno přihlášeného uživatele (je používáno některými programy odvozenými z BSD).
Jméno přihlášeného uživatele (je používáno některými programy odvozenými z System-V).
Uživatelův domovský adresář, který je nastaven při přihlášení programem login(1) ze souboru hesel passwd(5).
Název locale které má být použito pro kategorie locale, pokud není nastaveno LC_ALL nebo konkrétnější proměnné prostředí jako LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME, viz locale(5).
Seznam adresářů, které sh(1) a mnoho dalších programů používá při hledání souboru u něhož není známa kompletní cesta. Jednotlivé adresáře jsou odděleny ':'. (Podobně se CDPATH používá v některých shellech k nalezení cíle pro příkaz změny adresáře, man(1) používá MANPATH k nalezení manuálových stránek, atd.)
Aktuální pracovní adresář. Nastavují jej některé shelly.
Cesta k login shellu uživatele.
Typ terminálu, pro který má být připraven výstup.
Uživatelem preferovaná utilita pro zobrazení textových souborů.
Uživatelem preferovaná utilita pro editování textových souborů.

Další jména mohou být do prostředí umístěna příkazem export a "jméno=hodnota" v sh(1) nebo příkazem setenv v csh(1). Argumenty mohou být umístěny do prostředí i při volání funkce exec(3). Program v C může manipulovat svým prostředím pomocí funkcí getenv(3), putenv(3), setenv(3), a unsetenv(3).

Chování mnoha programů a knihovních rutin je ovlivněno přítomností nebo hodnotou určitých proměnných prostředí. Náhodný výběr:

Proměnné LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES, atd. ovlivňují použití locale, srov. locale(5).

TMPDIR ovlivňuje prefix cesty u názvů, které vytváří tmpnam(3) a jiné rutiny, dočasný adresář, který používá sort(1) a jiné programy, atd.

LD_LIBRARY_PATH, LD_PRELOAD a další LD_* proměnné ovlivňují chování dynamického loaderu/linkeru.

POSIXLY_CORRECT způsobí, že se určité programy a knihovní rutiny drží předpisů POSIX.

Chování malloc(3) je ovlivněno proměnnými MALLOC_*.

Proměnná HOSTALIASES obsahuje název souboru, který obsahuje aliasy pro použití s gethostbyname(3).

TZ a TZDIR obsahují informaci o časové zóně, kterou používá tzset(3) a tím pádem i funkce jako ctime(3), localtime(3), mktime(3), strftime(3). Viz též tzselect(8).

TERMCAP obsahuje informaci o možnostech terminálu (nebo název souboru obsahujícího tuto informaci).

COLUMNS a LINES sdělují aplikacím velikost okna, bez ohledu na jeho skutečnou velikost.

PRINTER nebo LPDEST mohou určit tiskárnu, která má být použita. Viz lpr(1).

Atd.

CHYBY

Je zde jasné bezpečností riziko. Mnoho systémových příkazů může být svedeno k páchání škody uživatelem, který zadal zvláštní hodnoty pro IFS nebo LD_LIBRARY_PATH.

Existuje také riziko kontaminace jmenného prostoru. Programy jako make a autoconf umožňují upřednostnit výchozí názvy utilit prostředí podobně pojmenovanými proměnnými zapsanými velkými písmeny. Takže se používá CC pro výběr požadovaného překladače C (a podobně i MAKE, AR, AS, FC, LD, LEX, RM, YACC, atd.). Nicméně při klasickém použití předává takováto proměnná prostředí programu volbu, nikoliv název soboru. Takže se používá MORE, LESS, a GZIP. Takovéto použití se pokládá za chybu a nové programy by se mu měly vyhýbat. Autoži programu gzip by měli zvážit přejmenování volby na GZIP_OPT.

DALŠÍ INFORMACE

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)

TIRÁŽ

Tato stránka je součástí projektu Linux man-pages. Popis projektu a informace o hlášení chyb najdete na http://www.kernel.org/doc/man-pages/.

2001-12-14 Linux