Главная » 2017 » Ноябрь » 17 » man 7 environ
00:03
man 7 environ

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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



ОБЗОР


extern char **environ;



ОПИСАНИЕ


Переменная environ указывает на массив указателей на строки, который называют
«окружением» (environment). Последний указатель в этом массиве имеет значение NULL
(данная переменная должна быть объявлена в программе пользователя, а кроме того
она объявлена в заголовочном файле <unistd.h>, если определён макрос тестирования
свойств _GNU_SOURCE). Указанный массив строк, становится доступным процессу после
вызова exec(3), которая запускает процесс. Если дочерний процесс создаётся с
помощью fork(2), то он наследует копию окружения своего родителя.

По договорённости, строки в environ имеют вид «имя=значение». Вот некоторые
примеры:

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 (подробней
смотрите описание переменных окружения LC_* в locale(7)).

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

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

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

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

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

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

Имена можно помещать в окружение оболочки с помощью команды export в sh(1) или
командой setenv, если используется csh(1).

Начальное окружение оболочки создаётся различными путями, например из файла
/etc/environment, который обрабатывается pam_env(8) при входе любого пользователя
(в системах с pam(8)). Также, различные сценарии инициализации оболочки, такие как
команду. Перед командой можно указывать несколько определений переменных, разделяя
их пробельным символом.

При вызове exec(3) в окружение также могут быть помещены и аргументы. Программа,
написанная на языке C, может изменять своё окружение с помощью функций getenv(3),
putenv(3), setenv(3) и unsetenv(3).

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

* Переменные LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES и т. д.
влияют на работу с локалью; смотрите catopen(3), gettext(3) и locale(7).

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

* Переменные LD_LIBRARY_PATH, LD_pLOAD и другие LD_* влияют на поведение
динамического загрузчика/компоновщика.

* Переменная POSIXLY_CORRECT влияет на определённые программы и библиотечные
вызовы таким образом, что они включают режим соответствия POSIX.

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

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

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

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

* Через переменные COLUMNS и LINES приложение может узнать о размере окна
(возможно указать ненастоящий размер).

* В переменной PRINTER или LPDEST можно указать предпочтительный для печати
принтер. Смотрите lpr(1).



ЗАМЕЧАНИЯ


Операции prctl(2) PR_SET_MM_ENV_START и PR_SET_MM_ENV_END можно использовать для
управления расположением окружения процесса.



ДЕФЕКТЫ


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

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

Категория: (7) Различные описания, соглашения и прочее | Просмотров: 457 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar