Jak dodać katalog do MANPATH lub INFOPATH?

19

Myślę, że rozumiem instrukcje podane w temacie Jak dodać katalog do ŚCIEŻKI? na temat dodawania katalogów do $ PATH. Ale nie rozumiem, jak dodać katalogi do $ MANPATH lub $ INFOPATH.

Poza tym, szukając pomocy w Google, zauważyłem, że czasami wskazówki mówią, export PATH=/usr/share/lib/something:$PATHa czasem mówią export PATH=$PATH:/usr/share/lib/something. Który to jest?

izomorfizmy
źródło

Odpowiedzi:

24
  1. Te 2 są prawie takie same:

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

    Jedyna różnica polega na tym, że pierwszy umieszcza katalog, który ma zostać dodany, a drugi umieszcza go za bieżącymi katalogami $PATH. Ma to znaczenie tylko wtedy, gdy w środku znajdują się polecenia /usr/share/lib/somethingo tej samej nazwie w jednym z katalogów w $PATH.

  2. Aby dodać katalogi do $MANPATHlub $INFOPATHzgodnie z wymaganiami z linku, który opublikowałeś, zrób to, zmieniając pliki konfiguracyjne w linku.

    Mówi się, aby otworzyć globalną wersję za bash.bashrcpomocą:

    sudo vi /etc/bash.bashrc
    

    i dodać na końcu:

    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
    

    Te zestawy $PATH, $MANPATHi $INFOPATH. Mówi także o edytowaniu za /etc/manpath.configpomocą:

    sudo vi /etc/manpath.config
    

    i dodać

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

    pod spodem # set up PATH to MANPATH mapping.


Jeśli nie masz pewności co do tego, zrób kopię zapasową 1. (nigdy nie jest to złe) z:

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

Dziwny ciąg zmienia się w bieżącą datę. Jeśli się zepsujesz, po prostu skopiuj kopię zapasową do oryginalnego pliku:

$ touch test1
$ cp test1 test1.$(date +"%Y_%m_%d")
$ ls
test1  test1.2014_11_14  
Rinzwind
źródło
1
Zainstalowałem texlive 2012 na Ubuntu Precise i echo $MANPATHwraca /usr/local/texlive/2012/texmf/doc/mando mnie. Kiedy dodam ścieżki do raportów bash konfiguracji /usr/local/texlive/2012/texmf/doc/man:/usr/local/texlive/2012/texmf/doc/mani Zsh nadal raport /usr/local/texlive/2012/texmf/doc/man. Do zsh dodaję ścieżki /etc/zsh/zshrc. Nie jestem pewien, czy to prawda. Próbowałem również edytować /etc/environment, jak sugerowano tutaj , ale bez powodzenia.
JJD
Jakie polecenie mogę zobaczyć po napisaniu MANPATH=/usr/local/texlive/2010/texmf/doc/man:$MANPATH; export MANPATH? Próbowałem man tlmgri mówi, że to nie istnieje.
Arturo,
2

Jeśli twoje strony /usr/local/myproject/manpodręcznika są w środku , wszystko, co musisz zrobić, to dodać to (na końcu) /etc/manpath.config:

MANDATORY_MANPATH        /usr/local/myproject/man
Michel
źródło
0

x:y:z:$PATHczy $PATH:x:y:z?

Prawie inaczej. $PATHzawiera oddzielną :listę miejsc, w których bash (powłoka / terminal) powinien sprawdzić program.

Na przykład, jeśli wpiszesz catsposób, w jaki terminal rozumie, co to znaczy, przejrzysz pierwszy, drugi, trzeci element $PATH, a następnie zapiszesz pierwszą znalezioną lokalizację do późniejszych wywołań cat.

Jeśli mam dwie różne wersje programu w dwóch różnych miejscach, przy czym jedna z nich jest preferowana, i $PATHmówi powłoce, aby szukała w niewłaściwej kolejności, oznacza to problem. W przeciwnym razie nie ma problemu.


eksport

Otwórz terminal i wpisz

echo $a
a=5
echo a
echo $a

Zobaczysz, że a=5ustawia wartość zmiennej i $aodnosi się do nazwy zmiennej, a nie wartości.

Otwórz drugi terminal i wpisz echo $a. Powinno być znowu puste.

Różnica między exporti assignment ( =) jest wyjaśniona tutaj: /programming/1158091/defining-a-variable-with-or-without-export .

izomorfizmy
źródło