Wie kann MANPATH eingestellt werden, ohne die Standardeinstellungen zu überschreiben?

13

Ich habe $PATHdurch den Export zusätzliche Verzeichnisse hinzugefügt. PATH=/my/dirs:$PATH Ich bin mir jedoch nicht sicher, ob ich dasselbe tun soll MANPATH. Da der Standardwert MANPATHleer ist, manfunktioniert der Befehl dennoch . Ich habe einen Befehl namens gefunden manpathund in dessen Handbuch steht If $MANPATH is set, manpath will simply display its contents and issue a warning.. Bedeutet dies, dass das Festlegen von MANPATH nicht der richtige Weg ist, Verzeichnisse für manBefehle hinzuzufügen , um nach manuellen Seiten zu suchen?

balki
quelle

Antworten:

19

Wenn Sie einfach MANPATH festlegen, wird die Standardeinstellung überschrieben, und Sie verlieren den Zugriff auf die Standard-Manpages. Funktioniert z. B. man lsvor dem Festlegen von MANPATH, funktioniert danach jedoch nicht mehr.

Um ein Suchverzeichnis anzuhängen, ohne das Standardverzeichnis zu überschreiben, stellen Sie MANPATH einen Doppelpunkt wie folgt voran:

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

Durch Hinzufügen des Doppelpunkts erhalten Sie Zugriff auf die Manpages des Standardsystems und auf die benutzerdefinierten Seiten, auf die in der Variablen MANPATH verwiesen wird.

Diese Antwort von manpath (1) :

Wenn $ MANPATH gesetzt ist, zeigt manpath seinen Wert an, anstatt ihn sofort zu bestimmen. Wenn $ MANPATH ein Doppelpunkt vorangestellt ist, wird der Wert der Variablen an die Liste angehängt, die aus dem Inhalt der Konfigurationsdateien ermittelt wurde. Befindet sich der Doppelpunkt am Ende des Werts in der Variablen, wird die ermittelte Liste an den Inhalt der Variablen angehängt. Wenn der Wert der Variablen einen Doppelpunkt (: :) enthält, wird die ermittelte Liste in der Mitte des Werts zwischen den beiden Doppelpunkten eingefügt.

maharvey67
quelle
1

IMO sollten Sie Ihre benutzerdefinierten Verzeichnisse am Ende Ihres PFADS hinzufügen

PATH=$PATH:/my/dirs

Dies ist so, dass Ihre benutzerdefinierten Verzeichnisse die System-Binärdateien / -Libs nicht überschreiben und ein geringfügiges Sicherheitsproblem darstellen.

Sie legen MANPATH auf dieselbe Weise fest (MANPATH ist standardmäßig leer).

MANPATH=$MANTPATH:/my/dirs

Du solltest keinen MANPATH mit gut erzogenen Paketen setzen müssen, also wenn es nicht kaputt ist, repariere es nicht und wenn es kaputt ist, ist es vielleicht besser einen Fehlerbericht einzureichen;)

Fügen Sie dies zu ~ / .bashrc hinzu

export PATH=$PATH:/my/dirs
export MANPATH=$MANPATH:/my/dirs
Panther
quelle
Tippfehler in der zweiten Aussage? MANPATH=$MANTPATH:/my/dirs Vielleicht sollte sein:MANPATH=$MANPATH:/my/dirs
Kevinarpe
Was meinen Sie mit "gut erzogenen Paketen"? Ich habe eine ganze Reihe von Tools, die nicht an den üblichen Orten installiert sind (HPC-Cluster setzen häufig Dinge in / opt). Wie sollten sie ihre Manpages registrieren, ohne $ MANPATH zu verwenden?
i_grok
"Gut erzogene Pakete" sind so geschrieben, dass sie Standardpfade und Umgebungsvariablen verwenden. Schlecht verhaltene Pakete verwenden, zumindest für Ubuntu, nicht standardmäßige Pfade wie / opt oder verwenden keine Umgebungsvariablen und führen so zu Ihrer Beobachtung "Ich habe eine ganze Reihe von Tools, die nicht an den üblichen Orten installiert sind (HPC-Cluster setzen oft ein Dinge in / opt) "
Panther