Как узнать, в каком файле конфигурации установлена переменная среды $MANPATH
? Есть ли способ отследить значения?
Мне известно, что я могу просматривать всю файловую систему, используя find
или grep
. Я использую zsh
большую часть времени вместо bash
. Я использую Ubuntu Precise.
Как уже писали другие, Ubuntu по умолчанию не устанавливает MANPATH
. Вы можете отредактировать .profile
и добавить MANPATH
, как вам нравится. Но где Ubuntu получает информацию о вашем manpath?
Эта информация установлена в /etc/manpath.config
. Пакет man-db
использует эту информацию для настройки путей для man. Переменная окружения MANPATH
имеет приоритет над файлом manpath.config
. Файл содержит следующие (и, вероятно, больше) записи:
MANDATORY_MANPATH /usr/share/man
MANPATH_MAP /usr/bin /usr/man
DEFINE troff groff -mandoc
Первая строка сообщает программе, которая автоматически генерирует MANPATH
, какие каталоги она должна содержать. Обычно здесь устанавливаются /usr/man
, /usr/share/man
и другие.
Далее идет отображение от пользователей PATH
на правильное MANPATH
. Если у пользователя есть /usr/bin
в его PATH
, MANPATH
должен содержать /usr/man
в моем приведенном выше примере.
Значение DEFINE
имеет некоторый набор аргументов и программ по умолчанию для утилит пейджинга.
Ubuntu по умолчанию не устанавливает $MANPATH
, поэтому ваш поиск может быть ограничен вашим ~/.{ba,z}shrc
и файлами, которые они включают
Путь поиска, скомпилированный в команду man, можно увидеть с помощью [112 ]. В моей системе (12.10) это возвращает /usr/local/man:/usr/local/share/man:/usr/share/man
Попробуйте запустить
zsh -x -ls -c "exit" 2> shell-startup-output
После выполнения этой команды файл shell-startup-output
должен отображать каждый исходный файл при запуске оболочки. Затем вы можете просмотреть каждый из этих файлов, чтобы увидеть, какой из них установлен $MANPATH$
.
Если это не работает для вас, единственный другой способ, которым я знаю, это использовать grep
или find
.
export MANPATH=$(man -w):/new/path
лучший способ? – Evan Teran 17.02.2020, 21:22