MANPATH(5)
๐ NAME ๐
ok so this is the MANPATH(5) page bestie โ it's all about the format of the /etc/man_db.conf file. (also known as manpath if you're being formal ๐
)
โจ DESCRIPTION โจ
The manpath configuration file is what the manual page utilities read to figure out users' manpaths at run time. It does three whole jobs:
- says which manual page hierarchies (manpaths) are to be treated as system hierarchies ๐
- hands them directories to be used for storing cat files
- (that's the vibe, that's the assignment)
heads up bestie: if the environment variable$MANPATHis already set, the info inside/etc/man_db.confwill not override it. nope. it does not win that fight. ๐
๐ SEARCH PATH ๐
By default, man-db examines the user's $PATH. For each path_element found there, it adds manpath_element to the search path. easy.
If there is no MANPATH_MAP line in the configuration file for a given path_element, then it adds all of these that exist as directories to the search path:
path_element/../manpath_element/manpath_element/../share/manpath_element/share/man
It then adds any MANDATORY_MANPATH entries from the configuration file to the search path. ๐ซ
Finally, if the --systems option is used or the $SYSTEM environment variable is set, then that should consist of a sequence of operating system names separated by commas or colons. This acts as a template, expanding the search path once more to allow access to other operating systems' manual pages: for each system name, man-db looks for that name as a subdirectory of each entry in the search path, and adds it to the final search path if it exists. A system name of man inserts the normal search path without subdirectories. no cap.
fr fr example: if the search path would otherwise have been /usr/share/man:/usr/local/man, and $SYSTEM is set to newOS:man, then the final search path will be:
/usr/share/man/newOS:/usr/share/man:/usr/local/man/newOS:/usr/local/man
ate. ๐
The $MANPATH environment variable overrides man-db's default manual page search paths. Most users should not need to set it. Its syntax is similar to the $PATH environment variable: it consists of a sequence of directory names separated by colons. It overrides the default search path described above.
ok and here's the sneaky little colon lore ๐ซถ:
- If the value of
$MANPATHstarts with a colon, then the default search path is added at its start. - If the value of
$MANPATHends with a colon, then the default search path is added at its end. - If the value of
$MANPATHcontains a double colon (::), then the default search path is inserted in the middle of the value, between the two colons.
๐ FORMAT ๐
The following field types are currently recognised (bestie these are the icons of the file, learn them):
# commentโ Blank lines or those beginning with a#will be treated as comments and ignored. ๐คMANDATORY_MANPATH manpath_elementโ Lines of this form indicate manpaths that every automatically generated$MANPATHshould contain. This will typically include/usr/man. mandatory means MANDATORY, she's not asking ๐MANPATH_MAP path_element manpath_elementโ Lines of this form set up$PATHto$MANPATHmappings. For eachpath_elementfound in the user's$PATH,manpath_elementwill be added to the$MANPATH. it's giving matchmaker energy ๐MANDB_MAP manpath_element [ catpath_element ]โ Lines of this form indicate which manpaths are to be treated as system manpaths, and optionally where their cat files should be stored. This field type is particularly important ifmanis a setuid program, as (when in the system configuration file/etc/man_db.confrather than the per-user configuration file.manpath) it indicates which manual page hierarchies to access as the setuid user and which as the invoking user. ๐
The system manual page hierarchies are usually those stored under /usr such as /usr/man, /usr/local/man and /usr/X11R6/man.
If cat pages from a particular manpath_element are not to be stored or are to be stored in the traditional location, catpath_element may be omitted.
Traditional cat placement would be impossible for read only mounted manual page hierarchies and because of this it is possible to specify any valid directory hierarchy for their storage. To observe the Linux FSSTND the keyword FSSTND can be used in place of an actual directory.
unfortunately ๐ญ it is necessary to specify all system man tree paths, including alternate operating system paths such as/usr/man/sunand any NLS locale paths such as/usr/man/de_DE.88591. like. all of them. every single one. no skipping.
As the information is parsed line by line in the order written, it is necessary for any manpath that is a sub-hierarchy of another hierarchy to be listed first, otherwise an incorrect match will be made. An example is that /usr/man/de_DE.88591 must come before /usr/man. order matters bestie, this is a queue not a vibe ๐
DEFINE key valueโ Lines of this form define miscellaneous configuration variables; see the default configuration file for those variables used by the manual pager utilities. They include default paths to various programs (such asgrepandtbl), and default sets of arguments to those programs.SECTION section ...โ Lines of this form define the order in which manual sections should be searched. If there are noSECTIONdirectives in the configuration file, the default is:
SECTION 1 n l 8 3 0 2 3type 5 4 9 6 7
If multiple SECTION directives are given, their section lists will be concatenated.
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 ...").
SECTIONS is accepted as an alternative name for this directive. same girl, two names ๐
MINCATWIDTH widthโ If the terminal width is less thanwidth, cat pages will not be created (if missing) or displayed. The default is80.MAXCATWIDTH widthโ If the terminal width is greater thanwidth, cat pages will not be created (if missing) or displayed. The default is80.CATWIDTH widthโ Ifwidthis non-zero, cat pages will always be formatted for a terminal of the given width, regardless of the width of the terminal actually being used. This overridesMINCATWIDTHandMAXCATWIDTH. she's the main character, she wins ๐NOCACHEโ This flag preventsman(1)from creating cat pages automatically. no caching, no problem, she's built different ๐ฆ
๐ BUGS ๐
Unless the rules above are followed and observed precisely, the manual pager utilities will not function as desired. The rules are overly complicated. ๐ญ like genuinely. who wrote this. (respectfully.)
and that's the whole page bestie!! this one's from man-db version 2.13.1, dated 2025-05-02 โ go forth and configure your manpaths, you absolute icon ๐ซถโจ๐ธ๐
๐ฆ where this page comes from
- alpine 3.24: man-db-doc 2.13.1-r1 ยท GPL-2.0-or-later
- arch rolling: man-db 2.13.1-2 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- fedora 43: man-db 2.13.1-2.fc43 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- fedora 44: man-db 2.13.1-3.fc44 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- Copyright (C) 1994, 1995 Graeme W. Wilford. (Wilf.)
- Copyright (C) 2001-2019 Colin Watson
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms