Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
38
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

5.B. Определение переменных глобально

Каталог /etc/env.d

Чтобы определять эти переменные в одном месте, Gentoo ввел каталог /etc/env.d. Внутри данного каталога вы найдете множество файлов, таких как 00basic, 05gcc, и т. д., которые содержат переменные, необходимые приложению, отраженному в названии.

Например, когда вы установите gcc, ебилдом будет создан файл 05gcc, который будет содержать определения следующих переменных:

Код 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"

ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"

MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"

INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"

CC="gcc"

CXX="g++"

LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Другие дистрибутивы говорят, что вы можете изменять или добавлять такие определения переменых окружения в /etc/profile или других месторасположениях. С другой стороны, Gentoo делает легким для вас (и для Portage) поддерживать переменные окружения без необходимости обозревать множество файлов, которые могут содержать переменные окружения.

Например, когда обновляется gcc, файл /etc/env.d/05gcc также обновляется, без необходимости какого-то взаимодействия с пользователем.

Это не только полезно для Portage, но и для вас, как пользователя. Иногда может быть, что вам нужно установить некоторую переменную окружения на уровне системы. Например, мы возьмем переменную http_proxy. Вместо того, чтобы писать ее в /etc/profile, вы можете теперь просто создать файл (/etc/env.d/99local) и ввести свои определения туда:

Код 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Используя один и тот же файл для всех ваших переменных, вы можете быстро просмотреть переменные, которые вы сами определили.

Скрипт env-update

Несколько файлов в /etc/env.d определяют переменную PATH. Это не ошибка: когда вы запустите env-update, она склеит несколько определений, прежде чем обновит переменные окружения, так что для пакетов (и пользователей) будет просто добавить свои собственные настройки переменных окружения без пересечения с уже существующими значениями.

Скрипт env-update добавит значения в алфавитном порядке файлов /etc/env.d. Имена файлов должны начинаться с двух десятичных цифр.

Код 2.3: Порядок обновления, используемый env-update

00basic 99kde-env 99local

+-------------+----------------+-------------+

PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Соединение переменных происходит не всегда, а только со следующими переменными: KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH и PRELINK_PATH_MASK. Для всех остальных переменных используется последнее определенное значение (в алфавитном порядке файлов /etc/env.d)

Когда вы запускаете env-update, скрипт создаст все переменные окружения, и поместит их в /etc/profile.env (который используется /etc/profile). Он также возьмет информацию из переменной LDPATH и использует ее для создания /etc/ld.so.conf. После этого он запустит ldconfig чтобы пересоздать файл /etc/ld.so.cache, используемый динамическим линкером.

Если вы хотите посмотреть эффект, оказанный env-update сразу же после ее запуска, выполните следующую команду для обновления вашего окружения. Пользователи, которые сами устанавливали Gentoo, наверное, вспомнят эту команду из инструкций по установке:

Код 2.4: Обновление окружения

# env-update && source /etc/profile

Заметка: Вышеприведенная команда обновляет переменные только в вашем текущем терминале, новых консолях, а также их детям. Поэтому, если вы работаете в X11, вам нужно либо ввести source /etc/profile в каждом новом терминале, который вы откроете, либо перестартовать X, чтобы все терминалы начила работать с новыми переменными. Если вы используете менеджер логина, станьте root, и наберите /etc/init.d/xdm restart. Если не используете, вам нужно сделать логаут, и затем снова залогиниться, чтобы X создал новых детей с новыми занчениями переменных.

Важно: Вы не можете использовать переменные окружения при определении новых переменных. Это означает, что вещи, вроде FOO="$BAR" (где $BAR это другая переменная) запрещены.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]