Автор: John P. Davis
Переводчик: Иван Зенков
Это руководство разъясняет значение и способы применения каталога /etc/env.d и того, что внем находится.
1.4 21 Dec 2002
Один из самых частых вопросов которые мы получаем от пользователей Gentoo, это: "где находятся переменные рабочей среды и как они настроены?". Чтобы понять этот вопрос сначала мы должны узнать какие бывают переменные. Обычно переменные устанавливаются с помощью команды export. Например выполнив export EDITOR="/usr/sbin/vim", вы установите переменную, сообщающую системе, что редактором по умолчанию является vim. Есть много других переменных которые могут быть установлены на вашей Gentoo системе, некоторые из них - в таблице.
Замечание: export выставляет переменные для оболочки и *всех* дочерних процессов. Если вы хотите установить переменную без воздействия на (другие) процессы, то просто используйте что-то вроде FOO="bar". Ваш файл 00basic может быть несколько другим. Это - не проблема, поскольку это заданные по умолчанию переменные, настройки которых с самого начала упакованы в Gentoo.
Эти примеры могут быть найдены в /etc/env.d/00basic. PATHЭта переменная устанавливает путь поиска программ. ':' разделитель путей.
Переменная | Функция переменной |
PATH | Эта переменная устанавливает путь поиска программ. ':' разделитель путей. Пример переменной, что-то вроде PATH=/usr/local/bin:/opt/bin. |
ROOTPATH |
Эта переменная похожа на PATH, но устанавливает путь поиска программ для пользователя |
LDPATH | Эта переменная указывает путь поиска библиотек для связывания. Тот же разделитель путей ':'. Пример переменной, будет смотреться как LDPATH=/usr/local/lib. |
MANPATH | Эта переменная указывает путь на каталоги man страниц вашей системы. Чем-то схоже с PATH, но только для man страниц. Пример переменной, MANPATH=/usr/share/man:/usr/local/share/man. |
INFODIR | Эта переменная указывает путь на каталоги с info страницами. Пример, INFODIR=/usr/share/info.|
PAGER | Эта переменная устанавливает используемый вами пейджер, то есть less или more. Например, PAGER=/usr/bin/less. |
EDITOR | Данная переменная устанавливает системный редактор. Например так, EDITOR=/usr/bin/vim. |
Этот пример файла /00basic/, даст вам представление о там как все должно выглядеть, а также пригодится на случай если с вашим 00basic что-нибудь случится.
# Copyright 1999-2002 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/env.d/00basic,v 1.6 2002/06/20 22:07 :37 azarah Exp $ PATH=/usr/local/bin:/opt/bin ROOTPATH=/usr/local/bin:/opt/bin LDPATH=/usr/local/lib MANPATH=/usr/share/man:/usr/local/share/man INFODIR=/usr/share/info CVS_RSH=ssh PAGER=/usr/bin/less EDITOR=/usr/bin/vim LESSOPEN="|lesspipe.sh %s"
# Это комментарий, как в BASH /переменная1=/куда/-/то/ # Некоторые переменные имеют разделитель ':'. /пер1а=/путь/к/чему/-то:/другой/путь/куда-то/ /переменная2=/что_то/
Есть некоторые специальные переменные, которые включены в env.d. Такие, например как: /KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK/. Они специальные, потому что они обработан особым способом, и помещены в специальные файлы, о которых я все объясню позже.
Некоторые из переменных рассматриваемых ниже, также были рассмотрены в примере с 00basic. Это хорошо, потому что значения переменных могут использоваться несколько раз в отдельных файлах, подробнее смотри ниже.
Переменная | Функция переменной |
KDEDIRS | Эта переменная указывает путь для всех файлов KDE. |
PATH | Уже упомянуто, ':' разделитель (см. выше). |
CLASSPATH | Эта переменная указывает путь для Java классов, ':' разделитель. |
LDPATH | Уже упомянуто, (см. выше). |
MANPATH | Уже упомянуто (см. выше), ':' разделитель. |
INFODIR | Уже упомянуто (см. выше), ':' разделитель. |
ROOTPATH | Уже упомянуто (см. выше), ':' разделитель. |
CONFIG_PROTECT | Эта переменная определяет конфигурационные файлы /etc, которые не будут изменены после установки нового пакета. Параметры данной переменной могут быть разделены. |
CONFIG_PROTECT_MASK | Эта переменная - инверсия CONFIG_PROTECT. Она выставляет, какие файлы в защищенном каталоге (/etc>) все-таки должны быть изменены после установки нового пакета. |
Хорошо, теперь когда я все объяснил, вы вероятно зададитесь вопросом, какое отношение все это имеет к вашей Gentoo системе? Сила /env.d/ в том, что вы можете изменять эти переменные под свои нужды как пожелаете. С описанным выше вам это будет легче сделать.
Теперь мы знаем о том, как все устроено, пришло время объяснить что происходит с этими переменными. Когда запускается env-update, то он связывает все эти файлы в указанном порядке. Помните, когда я сказал, что хорошо иметь множественные переменные /PATH/, находящиеся в различных файлах Это, потому что env-update проходит файлы последовательно соединяя пути вместе. Так, если у вас есть, /PATH/ для KDE, GNOME и для X, env-update свяжет все это в один объединенный путь. Нравится?
Так как эти переменные теперь связаны вместе, то важно обратить внимание где они сохранены.
Нижеперечисленные файлы создаются при запуске env-update
LDPATH ----> /etc/ld.so.conf CONFIG_PROTECT и CONFIG_PROTECT_MASK ----> /etc/profile.env (как экспортированные переменные Специальные и всякие ----> /etc/profile.env
Если вы посмотрите внутрь /etc/ld.so.conf, вы увидите, что источником размещенной там информации был env.d.
# ld.so.conf autogenerated by env-update; make all changes to # contents of /etc/env.d directory /usr/local/lib /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2 /usr/lib/opengl/nvidia/lib /usr/lib/mozilla /usr/X11R6/lib /opt/blackdown-jdk-1.3.1/jre/lib/i386/ /opt/blackdown-jdk-1.3.1/jre/lib/i386/native_threads/ /usr/qt/3/lib /usr/qt/2/lib /usr/kde/3/lib
Хорошо также узнать, что /etc/profile.env это тоже самое, что и ваш shell.env (то есть /csh.env/ или /bash.env/). А хорошо это, потому, что теперь вы можете использовать все ваши переменные в оболочке после следующего запуска.
/etc/env.d настройки ----env-update----> /etc/profile.env ---> /etc/profile ---> bash ---> все ваши программы
Теперь когда у вас есть /profile.env/ он может выглядеть так:
export CONFIG_PROTECT='/usr/kde/3/share/config /usr/share/config' export KDEDIRS='/usr/kde/3:/usr' export MANPATH='/usr/share/man:/usr/local/share/man:/usr/X11R6/man:/opt/blackdown-jdk-1.3.1/man' export INFODIR='/usr/share/info:/usr/X11R6/info' export PATH='/usr/local/bin:/opt/bin:/opt/rar/bin:/usr/X11R6/bin:/opt/blackdown-jdk-1.3.1/bin:/opt/blackdown-jdk-1.3.1/jre/bin:/usr/qt/3/bin:/usr/qt/2/bin:/usr/kde/3/bin' export CONFIG_PROTECT_MASK='/etc/gconf' export CLASSPATH='/opt/blackdown-jdk-1.3.1/jre/lib/rt.jar:.' export ROOTPATH='/usr/local/bin:/opt/bin:/opt/rar:/usr/X11R6/bin:/opt/blackdown-jdk-1.3.1/bin:/opt/blackdown-jdk-1.3.1/jre/bin:/usr/qt/3/bin:/usr/qt/2/bin:/usr/kde/3/bin' export KDEDIR='/usr/kde/3' export VIMRUNTIME='/usr/share/vim/vim61' export JDK_HOME='/opt/blackdown-jdk-1.3.1' export JAVAC='/opt/blackdown-jdk-1.3.1/bin/javac' export PAGER='/usr/bin/less' export HOSTNAME='l00ser.muc.edu' export QMAKESPEC='linux-g++' export LESSOPEN='|lesspipe.sh %s' export CVS_RSH='ssh' export EDITOR='/usr/bin/vim' export QTDIR='/usr/qt/3' export JAVA_HOME='/opt/blackdown-jdk-1.3.1' export XINITRC='/etc/X11/xinit/xinitrc' export MOZILLA_FIVE_HOME='/usr/lib/mozilla'
Хорошо, это все что я хотел сказать, наслаждайтесь и постарайтесь ничего не нарушить!