environ

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



НАЗВАНИЕ
       environ - среда окружения

КРАТКАЯ СВОДКА
       extern char **environ;

ОПИСАНИЕ
       Переменная environ указывает на массив строк, который называется `среда
       окружения'.  (эта переменная должна быть объявлена в программе
       пользователя, но также объявлена в заголовочном файле unistd.h, если
       используется libc4 или libc5, или же glibc, и определен макрос
       _GNU_SOURCE).

       Этот массив строк становится доступным процессу в результате вызова
       функции exec(3), которая начинает выполнение этого процесса.  По
       соглашению эти строки имеют вид `name=value'.  Вот примеры обычных строк:

       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'ей.
              Последовательность команд браузеру, разделенная двоеточиями.  См.
              http://www.tuxedo.org/~esr/BROWSER/.

       Другие имена можно поместить в среду окружения с помощью команды export и
       записи `name=value' в sh(1), или с помощью команды setenv, если вы
       используете csh(1).  Аргументы также можно помещать в среду окружения с
       помощью системного вызова exec(2).

       Программа на 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 дают информацию о часовом поясе.

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

       COLUMNS и LINES cообщают приложениям размер окна, возможно, переопределяя
       настоящий размер.

       PRINTER или LPDEST могут задавать желаемый принтер, использующийся по
       умолчанию.  И так далее, и тому подобное.


ОШИБКИ РЕАЛИЗАЦИИ
       В частности, есть определенная проблема с безопасностью.  Многие
       системные команды были в свое время обмануты пользователями,
       устанавливавшими необычные значения переменных 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), unsetenv(3), locale(5)



Linux                            21 октября 1996                      ENVIRON(5)