Jak ustawić MANPATH bez nadpisywania wartości domyślnych?

14

Dodałem dodatkowe katalogi do $PATHeksportu, PATH=/my/dirs:$PATH ale nie jestem pewien, czy powinienem zrobić to samo MANPATH. Ponieważ domyślnie MANPATHjest pusta, ale manpolecenie działa. Znalazłem polecenie o nazwie, manpatha jego instrukcja mówi If $MANPATH is set, manpath will simply display its contents and issue a warning.. Czy to oznacza, że ​​ustawienie MANPATH nie jest właściwym sposobem dodawania katalogów dla manpoleceń w celu wyszukiwania stron podręcznika?

balki
źródło

Odpowiedzi:

20

Jeśli po prostu ustawisz MANPATH, zastąpi ono domyślną i utracisz dostęp do standardowych stron podręcznika. Na przykład man lsdziała przed ustawieniem MANPATH, ale później nie działa.

Aby dołączyć katalog wyszukiwania bez przesłaniania wartości domyślnej, należy wprowadzić dwukropek do MANPATH w następujący sposób:

export MANPATH=":/path/to/custom/man"

Dodanie dwukropka daje dostęp zarówno do standardowych stron podręcznika systemowego, jak i do stron niestandardowych, do których odwołuje się zmienna MANPATH.

Ta odpowiedź dostarczona przez manpath (1) :

Jeśli ustawiono $ MANPATH, manpath wyświetla swoją wartość, a nie określa ją w locie. Jeśli $ MANPATH jest poprzedzony dwukropkiem, wówczas wartość zmiennej jest dodawana do listy określonej na podstawie zawartości plików konfiguracyjnych. Jeśli dwukropek znajduje się na końcu wartości w zmiennej, ustalona lista jest dołączana do zawartości zmiennej. Jeśli wartość zmiennej zawiera podwójny dwukropek (: :), to ustalona lista jest wstawiana pośrodku wartości, między dwoma dwukropkami.

maharvey67
źródło
1

IMO powinieneś dodać własne katalogi na końcu ŚCIEŻKI

PATH=$PATH:/my/dirs

Dzieje się tak, aby Twoje niestandardowe katalogi nie przejeżdżały nad plikami binarnymi / bibliotekami systemowymi i stanowi niewielki problem z bezpieczeństwem.

ustawiłeś MANPATH w ten sam sposób (MANPATH jest domyślnie pusty).

MANPATH=$MANTPATH:/my/dirs

Nie powinieneś ustawiać MANPATH z dobrze zachowującymi się pakietami, więc jeśli nie jest uszkodzony, nie naprawiaj go, a jeśli jest uszkodzony, być może lepiej jest zgłosić błąd;)

Dodaj to do ~ / .bashrc

export PATH=$PATH:/my/dirs
export MANPATH=$MANPATH:/my/dirs
Pantera
źródło
Literówka w drugim stwierdzeniu? MANPATH=$MANTPATH:/my/dirs Może powinno być:MANPATH=$MANPATH:/my/dirs
kevinarpe
Co rozumiesz przez „dobrze wychowane pakiety”? Mam cały zestaw narzędzi, które nie są instalowane w zwykłych miejscach (klastry HPC często umieszczają różne opcje / opt). Jak powinni zarejestrować strony man bez korzystania z $ MANPATH?
i_grok
„dobrze wychowane pakiety” są napisane w celu użycia standardowych ścieżek i zmiennych środowiskowych. Źle wychowane pakiety używają niestandardowych, przynajmniej do Ubuntu, ścieżek takich jak / opt lub nie używają zmiennych środowiskowych, a tym samym prowadzą do twoich spostrzeżeń „Mam cały zestaw narzędzi, które nie są instalowane w zwykłych miejscach (klastry HPC często umieszczają rzeczy w / opt) ”
Panther