- Команда manpath для начинающих
- Руководство по команде manpath
- Q1. Как работает команда manpath?
- Q2. Как получить в выводе catpath вместо manpath?
- Q3. Как заставить manpath вывести отладочную информацию?
- Q4. Как сделать так, чтобы manpath получил доступ к иерархиям справочных систем других ОС?
- Q5. Как заставить manpath использовать пользовательский конфигурационный файл?
- Заключение
- Переменные окружения в Linux
- Зачем нужны переменные окружения?
- Получение информации о переменных окружения
- Виды переменных окружения
- Системные переменные
- Пользовательские переменные
- Временные или переменные сеанса
- Установка переменных окружения
- 4. Переменные среды¶
- Переменные среды¶
- Что это такое?¶
- Важные примеры¶
- Глобальное определение переменных¶
- Каталог /etc/env.d¶
- Сценарий env-update¶
- Локальное определение переменных¶
- Пользовательские переменные¶
- Сеансовые переменные¶
Команда manpath для начинающих
Оригинал: Linux manpath Command Tutorial for Beginners (5 Examples)
Автор: Himanshu Arora
Дата публикации: 7 сентября 2018 года
Перевод: А. Кривошей
Дата перевода: май 2019 г.
Man-страницы в Linux — это то, что нужно для поддержки первого уровня, когда дело доходит до утилит командной строки. Как большинство из вас знает, вы просто пишете man [имя-команды], и появляется соответствующая man-страница. Но знаете ли вы путь, по которому ищутся эти страницы?
В этой статье мы обсудим manpath, утилиту, которая показывает вам эту информацию. Но прежде чем мы начнем, стоит упомянуть, что все приведенные здесь примеры были протестированы на машине с Ubuntu 18.04 LTS.
Руководство по команде manpath
Команда manpath в Linux помогает вам определить путь поиска для страниц помощи. Ниже приводится ее синтаксис:
И вот, как описывает ее справочная страница утилиты:
Ниже приведены примеры в стиле вопросов и ответов, которые должны дать вам хорошее представление о том, как работает команда manpath.
Q1. Как работает команда manpath?
Основное использование довольно тривиально — просто запустите ‘manpath’ без опций.
Например, вот что вышеприведенная команда вывела в моей системе:
Как видите, manpath создает разделенный двоеточиями список путей для справочных страниц.
Обратите внимание, что вы можете использовать параметр командной строки -g, если вы хотите создать manpath, состоящий из всех путей, названных «глобальными» в конфигурационном файле man-db.
Q2. Как получить в выводе catpath вместо manpath?
Для этого используйте параметр командной строки -c.
Вот как справочная страница утилиты объясняет эту операцию:
Как только manpath определен, каждый элемент пути преобразуется в относительный catpath.
Например, вот результат, полученный в моей системе:
Q3. Как заставить manpath вывести отладочную информацию?
Для этого используйте параметр командной строки -d.
Например, вот вывод этой команды, произведенной в моей системе:
Согласитесь, вы не будете использовать эту опцию очень часто, но вы должны хотя бы знать об этом на случай, если вам понадобится отладить вывод.
Q4. Как сделать так, чтобы manpath получил доступ к иерархиям справочных систем других ОС?
Для этого используйте параметр командной строки -m. Вот как справочная страница утилиты объясняет эту опцию:
Если эта система имеет доступ к иерархиям справки других операционных систем, этот параметр можно использовать для включения их в вывод manpath. Чтобы включить иерархии страниц справочной системы NewOS, используйте опцию -m NewOS.
Она также может быть комбинацией имен операционной системы, разделенных запятыми. Чтобы включить иерархии страниц справочной системы собственной операционной системы, имя системы должно быть включено в строку аргумента. Эта опция переопределит переменную среды $SYSTEM.
Q5. Как заставить manpath использовать пользовательский конфигурационный файл?
По умолчанию manpath извлекает информацию из следующего файла:
Однако, если вы хотите, вы можете заставить manpath прочитать любой другой файл. Это можно сделать, используя опцию командной строки -C.
Заключение
Если ваша работа с командной строкой в Linux связана с man-страницами , команда manpath будет для вас полезным инструментом. Здесь, в этом руководстве, мы обсудили большинство параметров командной строки manpath. Для получения дополнительной информации об утилите, перейдите на ее man-страницу.
Источник
Переменные окружения в Linux
В системах Linux для хранения и использования некоторых настроек и параметров используются специализированные контейнеры данных — переменные окружения. Они представляют собой именованные переменные, в которых хранится текстовое значение. В качестве значения могут использоваться пути, имена команд, файлов и. т. д. Переменные окружения можно редактировать, т. е. изменять их значения, удалять или создавать новые. Переменными окружения пользуются как система, так и программы, скрипты или демоны для своей работы.
Зачем нужны переменные окружения?
Если коротко, то они необходимы для организации различного рода окружений: системных, пользовательских, сеансовых, т. е. для хранения настроек соответствующих сред внутри системы. К примеру, программы для своей работы используют библиотечные функции, являющиеся одним из важнейших системных ресурсов. Или, например, интерпретатор команд способен находить соответствующие командам исполняемые файлы без необходимости каждый раз указывать соответствующие пути.
Но как программы «узнают», где можно найти те или иные ресурсы? Из переменных окружения. Таким же образом происходит запуск и исполнение команд в командной консоли, т. к. благодаря переменной окружения PATH интерпретатор bash (или любая другая командная оболочка) находит программу (исполняемый файл или библиотеку) по указанному в PATH пути. И таким же образом, к примеру, команда man «знает», что запрашиваемые страницы справочных руководств нужно искать согласно значению переменной окружения MANPATH.
Получение информации о переменных окружения
В работе, тесно связанной с системным администрированием довольно часто приходится сталкиваться с такими ситуациями, когда необходимо узнать значения некоторых переменных окружения или же вывести список полный список таковых. Для этой цели существует несколько специализированных утилит. В подавляющем большинстве случаев соответствующие пакеты уже предустановлены в системе. Самыми распространёнными из таких утилит являются printenv, env, а также export. Так, например, для того, чтобы вывести список действующих переменных окружения нужно дать следующую команду:
В данном выводе представлен сильно сокращённый список переменных окружения для Kubuntu 18.04. Также следует заметить, что представленный список относится к пользовательскому набору, доступному текущему пользователю. Если выполнить команду printenv от имени суперпользователя (root), то набор переменных будет несколько отличаться.
Как следует из вышеприведённого вывода, для пользователя john используется русская локализация для сеанса (LANG), в качестве командного интерпретатора по-умолчанию используется bash (SHELL), текущим активным каталогом является /home/john (PWD), а переменная PATH модифицирована и содержит в себе (кроме дефолтного /usr/bin) значения /opt/wxwidgets/bin и /home/john/.config/composer/vendor/bin. Значение каждой переменной окружения представляет собой, как можно видеть, набор параметров, разделённых двоеточиями.
Тот же список можно вывести, если дать команду env. Также можно использовать команду export с ключом -p:
Для вывода значения конкретной переменной:
В последнем случае будет выведены все переменные, содержащие фразу «PATH».
Виды переменных окружения
Как уже отмечалось, в системе существуют, образно выражаясь, различные рабочие среды для разных уровней доступа и продолжительности действия переменных. Для организации работы пользователей действует пользовательская среда (окружение), для корректного функционирования компонентов системы — системное окружение, доступное только суперпользователю. В процессе работы также можно устанавливать временные переменные окружения, доступные текущему пользователю и только на время действия текущего сеанса.
Ниже приведены некоторые наиболее часто используемые переменные окружения:
Имя | Описание |
HOME | Определяет путь к домашнему каталогу текущего пользователя |
PWD | Определяет текущий активный каталог |
OLDPWD | Предыдущий активный каталог |
SHELL | Определяет программу-командную оболочку |
TERM | Содержит имя текущей запущенной программы-терминала |
PAGER | Определяет программу для постраничного вывода страниц справочных руководств |
EDITOR | Определяет программу для редактирования текстовых файлов |
VISUAL | Определяет программу для редактирования текстовых файлов с расширенными возможностями (vim, emacs) |
Определяет путь к каталогу, в котором должны храниться файлы входящей электронной почты. | |
BROWSER | Определяет веб-браузер, запускаемый по-умолчанию |
ftp_proxy http_proxy | Определяют, соответственно адреса для прокси-серверов по FTP и HTTP протоколам |
MANPATH | Определяет каталог, в котором содержатся подкаталоги, содержащие man-страницы справочных руководств системной справки для команды man |
INFODIR | Определяет список каталогов для поиска info-страниц для команды info |
TZ | Определяет временную зону. Доступные временные зоны хранятся в /usr/share/zoneinfo |
Системные переменные
Согласно стандартам Linux переменные окружения для организации системной среды хранятся в нескольких файлах:
- /etc/bash.bashrc – хранение переменных для командных оболочек;
- /etc/profile – хранение переменных для интерактивных оболочек;
- /etc/environment – переменные из этого файла используются модулем
Конечно, подобное разделение для хранения переменных окружения сделано разработчиками не просто так и эти стандарты необходимо соблюдать, чтобы не замусорить систему бесполезной конфигурацией, вносящей путаницу, т. е. нужно внимательно выбирать нужный файл в зависимости от конкретной задачи и ситуации.
Пользовательские переменные
Для систем, ориентированных на многопользовательский доступ, например на хостинговых площадках, конкретному пользователю полезно иметь возможность гибко настраивать своё собственное рабочее окружение, создавая новые переменные или дополняя их новыми значениями. К примеру, владельцу сайта, для его виртуального хоста, обслуживающего сайт на CMS Drupal, захотелось установить утилиту drush, которая облегчает и ускоряет обслуживание CMS. В этом случае достаточно после локальной установки (в каком-нибудь подкаталоге домашнего каталога) drush, дополнить переменную PATH значением, содержащим путь к утилите drush в файле
/.bashrc. В результате командная оболочка сможет запускать команду drush для данного пользователя.
По стандартам соглашений для Linux-систем конфигурация для пользовательского окружения должна храниться в следующих файлах:
/.bashrc – для хранения параметров инициализации выбранной командной оболочки для пользователя;
/.profile – для инициализации доступных пользователю командных оболочек;
/.pam_environment – для использования модулем
Временные или переменные сеанса
Переменные окружения также можно устанавливать временно. Это значит, что переменная будет действовать только во время действия текущего сеанса пользователя. В таких случаях удобно иметь определённый скрипт, содержащий код с необходимыми переменными, который можно в любое время запускать командой:
Или же устанавливать их вручную командой export.
Установка переменных окружения
Чтобы установить временную (для сеанса) переменную окружения достаточно выполнить команду со следующим синтаксисом:
Если нужно временно модифицировать переменную PATH, то можно выполнить export:
Для того, чтобы удалить временную переменную можно воспользоваться командой unset:
Для установки системных или пользовательских переменных окружения следует помещать код с нужными переменными в соответствующие файлы инициализации окружения. Например, чтобы добавить на системном уровне какой-либо пользовательский каталог (пусть это будет
/bin), нужно один из файлов (/etc/profile или /etc/bash.bashrc) дополнить следующим кодом:
В случае, если нужно выполнить то же самое для пользовательского уровня переменных окружения, то редактировать нужно файл (для локального входа)
/.bashrc (для удалённого входа, например по SSH –
Этот код включит использование командным интерпретатором вышеупомянутой команды drush (предварительно установленной по указанному пути, конечно) для CMS Drupal.
Чтобы можно было видеть сделанные изменения, нужно их зафиксировать:
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
4. Переменные среды¶
Переменные среды¶
Что это такое?¶
Переменная среды — это именованный объект, который содержит информацию, используемую одним или несколькими приложениями. Многие пользователи (особенно новички в Linux) находят этот подход несколько странным или неуправляемым. Но это впечатление ошибочно: используя переменные среды, можно очень легко изменить настройку разнообразных программ.
Важные примеры¶
В следующей таблице описывается ряд переменных, используемых в системе Linux. Примеры их значений приведены далее.
Переменная | Описание |
PATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых система ищет исполняемые файлы. Если вы вводите имя исполняемого файла например ls , rc-update или emerge ), который не находится ни в одной из перечисленных здесь каталогов, этот файл не запустится (если, конечно, вы не указали полный путь, например /bin/ls ). |
ROOTPATH | У этой переменной такое же значение, что и у PATH , но в ней перечисляются только те каталоги, которые нужно просматривать при вводе команды пользователем с правами root. |
LDPATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых динамический компоновщик ищет библиотеки. |
MANPATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых команда man ищет страницы справки. |
INFODIR | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых команда info ищет info-страницы. |
PAGER | В этой переменной содержится путь к программе, позволяющей постранично просматривать содержимое файлов, например less или more . |
EDITOR | В этой переменной содержится путь к программе, используемой для изменения файлов, например vi или nano . |
KDEDIRS | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых находятся ресурсы KDE. |
CLASSPATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых находятся классы Java. |
CONFIG_PROTECT | В этой переменной содержится список каталогов, защищаемых Portage при обновлении, разделенных пробелами. |
CONFIG_PROTECT_MASK | В этой переменной содержится список каталогов, исключаемых из защиты Portage при обновлении, разделенных пробелами. |
Ниже представлен пример определения всех этих переменных:
Глобальное определение переменных¶
Каталог /etc/env.d¶
Для того, чтобы определить эти переменные централизованно, в Calculate существует каталог /etc/env.d . В нём находится ряд файлов, например, 00basic , 05gcc и так далее, в которых определяются переменные, необходимые программам, указанным в названии файлов.
Например, при установке gcc ebuild создает файл /etc/env.d/05gcc , содержащий следующие определения переменных:
В других дистрибутивах вам предлагается изменять или добавлять определения переменных среды в /etc/profile или где-нибудь еще. Calculate, с другой стороны, облегчает вам поддержку и управление переменными среды, избавляя от необходимости уделять внимание многочисленным файлам, содержащим определения переменных.
Например, когда обновляется gcc , также без малейшего участия пользователя обновляется и /etc/env.d/05gcc .
От этого выигрывает не только Portage, но и вы, пользователь. Иногда от вас может потребоваться глобальная установка какой-нибудь переменной. Возьмем, к примеру, переменную http_proxy . Вместо того, чтобы возиться с /etc/profile , теперь можно просто создать файл ( /etc/env.d/99local ) и добавить нужные определения туда:
Используя один и тот же файл для всех своих переменных, вы можете быстро увидеть все определенные вами переменные вместе.
Сценарий env-update¶
Переменная PATH определяется в нескольких файлах в /etc/env.d . Нет, нет это не ошибка: при запуске env-update различные определения объединяются перед обновлением переменных среды, позволяя пакетам (или пользователям) добавлять собственные значения переменных, не влияя на уже существующие.
Сценарий env-update объединяет значения переменных из файлов, находящихся в /etc/env.d , в алфавитном порядке. Имена файлов должны начинаться с двух десятичных цифр. Порядок обновления, используемый env-update :
Объединение выполняется не всегда, а только для следующих переменных: KDEDIRS , PATH , CLASSPATH , 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 вступили в силу немедленно, для обновления среды выполните следующую команду:
Примечание: Эта команда обновляет переменные только в текущем терминале, в новых консолях и их потомках. То есть, если вы работаете в X11, потребуется или набирать source /etc/profile в каждом открываемом терминале, или перезапустить X, чтобы все новые терминалы обращались к новым переменным. Если вы используете диспетчер входа в систему, станьте пользователем с правами root и наберите /etc/init.d/xdm restart . Если нет, вам придется выйти и снова войти в систему, чтобы X порождала потомков, использующих новые значения переменных.
Локальное определение переменных¶
Пользовательские переменные¶
Далеко не всегда нужно определять переменные глобально. Например, вам может понадобиться добавить /home/my_user/bin и текущий рабочий каталог (где вы находитесь) к переменной PATH , но при этом не нужно, чтобы это добавление появилось и в переменной PATH у всех остальных пользователей. Если вы хотите определить переменную среды локально, используйте
/.bash_profile . Пример расширения PATH в
/.bashrc для локальных нужд:
Обновление вашей переменной PATH произойдет, когда вы выйдете и снова войдете в систему.
Сеансовые переменные¶
Иногда нужны еще более жесткие ограничения. Вам может потребоваться возможность запуска исполняемых файлов из специально созданного временного каталога без указания полного пути к ним, и без изменения файла
/.bashrc ради нескольких минут.
В этом случае можно просто определить переменную PATH для текущего сеанса командой export . Переменной будет присвоено временное значение до тех пор, пока вы не завершите сеанс. Пример определения сеансовой переменной среды:
Источник