Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       environ - окружение пользователя

ОБЗОР

       extern char **environ;

ОПИСАНИЕ

       Переменная  environ указывает на массив строк, называемый `environment'
       (окружение).   (Данная  переменная  должна  быть  описана  в  программе
       пользователя,  а  кроме  того  она  описывается  в  заголовочном  файле
       unistd.h в том случае, если мы говорим о libc4 или libc5, а  для  glibc
       это  справедливо  только  если был задан флаг _GNU_SOURCE ).  Указанный
       массив  строк,  становится  доступным  процессу  через  вызов  exec(3),
       который  запускает  процесс.  По  договорённости,  эти строки имеют вид
       `='.  Вот некоторые примеры:

       USER   Имя пользователя, зарегистрированного  в  системе  (используется
              некоторыми программами, происходящими из BSD)

       LOGNAME
              Имя  пользователя,  зарегистрированного  в системе (используется
              некоторыми программами, происходящими из System-V)

       HOME   Домашний каталог пользователя, устновленный программой login(1),
              взятый из файла паролей passwd(5).

       LANG   Имя  локали  (от локали зависят многие региональные настройки --
              прим.пер.),  используемой  для  категорий  локали,  которые   не
              перекрыты  LC_ALL  или более специфичными переменными окружения,
              такими  как  LC_COLLATE,  LC_CTYPE,  LC_MESSAGES,   LC_MONETARY,
              LC_NUMERIC и LC_TIME. См.  locale(5).

       PATH   Последовательность  каталогов,  которых  sh(1)  и  многие другие
              программы, будут применять в качестве префикса при поиске файла,
              если   он  задан  неполным  именем.  Каталоги  разделяются  `:'.
              (Похожим образом CDPATH используется некоторыми программами  для
              поиска  команды  смены  каталога,  MANPATH используется командой
              man(1) для поиска страниц электронного руководства и т.д.)

       PWD    Текущий рабочий каталог. Устанавливается некоторыми программами.

       SHELL  Имя командного интерпретатора пользователя.

       TERM   Тип терминала, для которого будет подготавливаться вывод.

       PAGER  Предпочитаемая пользователем утилита просмотра текстовых файлов.

       EDITOR/VISUAL
              Предпочитаемая пользователем  утилита  редактирования  текстовых
              файлов.

       BROWSER
              Предпочитаемая     пользователем    утилита    просмотра    URL.
              Последовательность, разделённых  двоеточиями,  команд-браузеров.
              См. See http://www.catb.org/~esr/BROWSER/ .

       Вышеуказанные имена переменных могут быть помещены в окружение командой
       export  и  `имя=значение'  в  sh(1),  или  командой  setenv,  если   вы
       используете  csh(1).  При вызове exec(3).  в окружение также могут быть
       помещены  и  аргументы.   Программа,  написанная  на  языке   C   может
       манипулировать своим окружением с помощью функций getenv(3), putenv(3),
       setenv(3), и unsetenv(3).

       Заметим, что наличие или  значения  определённых  переменных  окружения
       может  отказывать  влияние  на поведение многих программ и библиотечных
       вызовов. Вот случайная подборка:

       Переменные LANG, LANGUAGE, NLSPATH,  LOCPATH,  LC_ALL,  LC_MESSAGES,  и
       т.д. влияют на управление региональными настройками, см.  locale(5).

       TMPDIR  влияет  на  путь  файлов, создаваемых вызовом tmpnam(3) и через
       некоторые  другие  вызовы,   временный   каталог   также   используется
       программой sort(1) и некоторыми другими, и т.д.

       LD_LIBRARY_PATH,   LD_PRELOAD   и  другие  переменные  LD_*  влияют  на
       поведение динамического загрузчика и редактора связей (компановщика).

       POSIXLY_CORRECT делает  поведение  определённых  программ  и  системных
       вызовов соответствующим POSIX.

       На поведение malloc(3) оказывают влияние переменные MALLOC_*.

       Переменная  HOSTALIASES  задаёт имя файла, содержащего псевдонимы имени
       узла, которые используются вызовом gethostbyname(3).

       TZ и TZDIR задают информацию о  временной  зоне,  используемую  вызовом
       tzset(3)   и  такими  функциями  как  ctime(),  localtime(),  mktime(),
       strftime().  См. также tzselect(1).

       TERMCAP  задаёт  информацию  о  адресе  терминала   (или   имя   файла,
       содержащего такую информацию).

       COLUMNS  и LINES говорят приложению о размере окна, возможно перекрывая
       фактический размер.

       PRINTER и LPDEST могут задавать предпочтительный принтер. См.   lpr(1).

       и т.д.

ОШИБКИ

       Честно  говоря, использование переменных окружения таит в себе проблемы
       безопасности.   Многие   системные   команды   могут   быть    обмануты
       пользователем,   который   может   задать   неправильные  значения  для
       переменных IFS или LD_LIBRARY_PATH.

       Также есть риск с загрязнением пространства имен.  Такие программы  как
       make  и  autoconf  позволяют перекрывать имена назначенных по умолчанию
       утилит,   через   переменные   окружения.   Например,   переменная   CC
       используется  для выбора нужного C-компилятора (и похожим образом можно
       использовать переменные MAKE, AR, AS, FC, LD, LEX, RM,  YACC,  и  т.д.)
       Однако,  в  некоторых  традиционных  случаях,  эти переменные окружения
       задают опции для данных программ,  вместо  их  имени.   Например  MORE,
       LESS,  и  GZIP.   Такое  использование  переменных  окружения  является
       ошибочным и будет избегаться в новых программах. Авторы gzip должны  бы
       переименовать переменную в GZIP_OPT.

СМОТРИ ТАКЖЕ

       login(1),   sh(1),   bash(1),   csh(1),  tcsh(1),  execve(2),  exec(3),
       getenv(3), putenv(3), setenv(3), clearenv(3), unsetenv(3), locale(5)

ПЕРЕВОД

       Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2004