environ

ENVIRON(7)               Руководство программиста Linux               ENVIRON(7)



ИМЯ
       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



Linux                              2001-12-14                         ENVIRON(7)