Jak chyba każdy korzystający ze stron podręcznika MAN wie, posiada on kilka rożnych sekcji. W każdej sekcji znajdują się opisy odpowiednich poleceń, plików konfiguracyjnych, wywołań systemowych i tak dalej (dokładną listę można poznać po wydaniu polecenia man man).

Czasami zdarza się tak, że wpis o takiej samej nazwie istnieje w kilku sekcjach – na przykład strona podręcznika dla passwd, istnieją wpisy odnoszące się zarówno do pliku binarnego jak i do pliku konfiguracyjnego o takiej nazwie. Wywołanie polecenia:

man passwd

powinno wyświetlić jedną stronę. I tutaj zaczyna się niespodzianka, która mnie dzisiaj spotkała: wydawało mi się, że zostanie zawsze wyświetlona strona, która znajduje się w sekcji o najmniejszym numerze.

Jednak tak naprawdę wygląda to inaczej, o czym można przekonać się przeglądając stronę podręcznika man:

Domyślnie wyszukuje we wszystkich dostępnych sekcjach, używając predefiniowanego porządku i pokazuje tylko pierwszą znalezioną stronę, nawet jeśli podana strona jest dostępna w kilku sekcjach.

Nie ma jednak żadnych informacji o faktycznej kolejności przeszukiwanych sekcji. Warto więc teraz odwołać się do pliku konfiguracyjnego /etc/manpath.config, a tam można zaleźć taką linijkę:

# Section names. Manual sections will be searched in the order listed here;
# the default is 1, n, l, 8, 3, 0, 2, 5, 4, 9, 6, 7. Multiple SECTION
# directives may be given for clarity, and will be concatenated together in
# the expected way.
# If a particular extension is not in this list (say, 1mh), it will be
# displayed with the rest of the section it belongs to. The effect of this
# is that you only need to explicitly list extensions if you want to force a
# particular order. Sections with extensions should usually be adjacent to
# their main section (e.g. "1 1mh 8 ...").
#
SECTION         1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7

I wszystko robi się jasne.

Tags: