Как добавить каталог в MANPATH или INFOPATH?


19

Мне кажется, я понимаю инструкции, приведенные в разделе Как добавить каталог в PATH? о добавлении каталогов в $ PATH. Но я не понимаю, как добавить каталоги в $ MANPATH или $ INFOPATH.

Кроме того - в поисках помощи я заметил, что иногда указания говорят, export PATH=/usr/share/lib/something:$PATHа иногда говорят export PATH=$PATH:/usr/share/lib/something. Что он?

Ответы:


24
  1. Эти 2 почти одинаковы:

    export PATH=/usr/share/lib/something:$PATH 
    export PATH=$PATH:/usr/share/lib/something
    

    Разница лишь в том, что первый помещает каталог для добавления впереди, а второй - позади текущих каталогов $PATH. Это имеет значение только в том случае, если /usr/share/lib/somethingвнутри одной из каталогов есть команды с одинаковым именем $PATH.

  2. Чтобы добавить каталоги $MANPATHили по $INFOPATHмере необходимости из ссылки, которую вы разместили, вы делаете это, изменяя файлы конфигурации внутри ссылки.

    Он говорит, чтобы открыть глобальную версию bash.bashrcс:

    sudo vi /etc/bash.bashrc
    

    и добавить в конце:

    PATH=/usr/local/texlive/2010/bin/x86_64-linux:$PATH; export PATH
    MANPATH=/usr/local/texlive/2010/texmf/doc/man:$MANPATH; export MANPATH
    INFOPATH=/usr/local/texlive/2010/texmf/doc/info:$INFOPATH; export INFOPATH
    

    Это наборы $PATH, $MANPATHи $INFOPATH. И это также говорит вам редактировать /etc/manpath.configс помощью:

    sudo vi /etc/manpath.config
    

    и добавить

    MANPATH_MAP /usr/local/texlive/2010/bin/x86_64-linux /usr/local/texlive/2010/texmf/doc/man
    

    под # set up PATH to MANPATH mapping.


Если вы не уверены в этом, сделайте резервную копию 1-й (никогда не плохо) с:

sudo cp /etc/bash.bashrc /etc/bash.backup_$(date +"%Y_%m_%d").bashrc
sudo cp /etc/manpath.config /etc/manpath.backup_$(date +"%Y_%m_%d").config

Странная строка меняется на текущую дату. Если вы запутались, просто скопируйте резервную копию поверх исходного файла:

$ touch test1
$ cp test1 test1.$(date +"%Y_%m_%d")
$ ls
test1  test1.2014_11_14  

1
Я установил texlive 2012 на Ubuntu Precise и echo $MANPATHвернулся /usr/local/texlive/2012/texmf/doc/manко мне. Когда я добавляю пути к конфигурации, bash сообщает /usr/local/texlive/2012/texmf/doc/man:/usr/local/texlive/2012/texmf/doc/manи zsh по-прежнему сообщает /usr/local/texlive/2012/texmf/doc/man. Для zsh я добавляю пути к /etc/zsh/zshrc. Я не уверен, что это правильно. Я также попытался редактировать /etc/environment, как это было предложено здесь , но безуспешно.
JJD


Какую команду я вижу после записи MANPATH=/usr/local/texlive/2010/texmf/doc/man:$MANPATH; export MANPATH? Я пытался, man tlmgrи он говорит, что его не существует.
Arturo

2

Если у вас есть справочные страницы /usr/local/myproject/man, все, что вам нужно сделать, это добавить это в (конец) /etc/manpath.config:

MANDATORY_MANPATH        /usr/local/myproject/man

0

x:y:z:$PATHили $PATH:x:y:z?

Едва разные. $PATHсодержит :разделенный список мест, где bash (оболочка / терминал) должен проверять наличие программы.

Например, если вы набираете catспособ, которым терминал понимает, что это значит - просматривать первый, второй, третий элементы $PATH, а затем сохраните первое местоположение, которое он найдет, для последующих вызовов cat.

Если у меня есть две разные версии программы в двух разных местах, причем одна из них предпочтительна, и она $PATHуказывает оболочке выполнять поиск в неправильном порядке, то возникает проблема. Иначе проблем нет.


экспорт

Откройте терминал и введите

echo $a
a=5
echo a
echo $a

Вы увидите, что a=5установите значение переменной и $aссылаетесь на имя переменной, а не на значение.

Откройте второй терминал и введите echo $a. Это должно быть снова пустым.

Различие между exportи assignment ( =) объясняется здесь: /programming/1158091/defining-a-variable-with-or-without-export .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.