Total Pageviews

Friday 14 March 2014

man 命令查找man手册的策略



本文的知识是从 man man 命令得到。在这里记录只为了备忘和方便,可以使用 man man 来获得纤细的说明。

man 命令是我们经常使用的一个命令,那么当你执行:man [command] 的时候, man命令是如何查找命令的手册呢?

根据man命令的帮助文档,我得到了如下信息:

    查找策略
    说明
    其它

查找策略⇧

man 命令查找命令帮助手册的策略:

    命令行指定 -M 参数,那么man命令使用这个目录搜索。否则,
    使用 MANPATH 环境变量指定的路径进行搜索.否则,
    查看/etc/man.config,找到其中的 MANPATH 配置,加入搜索路径. 然后,
    查看/etc/man.config, 找到其中的 MANPATHMAP 配置,加入搜索的”Map”路径,然后,
    遍历 PATH 变量中的每个路径,对不在 MANPATHMAP 中的路径, 执行”nearby”查找。
    在搜索路径中进行查找.

说明⇧

    “Map”路径:

    这种路径相当于一张hash表,前面是命令所在的PATH搜索路径,后面是man手册的查找路径,man 会根据这个hash表查找该命令的man手册。

    举例 :
        设置: MANPATHMAP /home/admin/git/bin /home/admin/git/man/

        当执行: man git 的时候, man 会根据 PATH 查找 git 这个命令的位置,在 /home/admin/git/bin 下找到了, 所以根据设置的hash表,在 /home/admin/git/man 这个路径下查找git的手册.
        设置: MANPATHMAP /bin /home/admin/git/man

        当执行: man git 的时候, man 会根据 PATH 查找 git 命令的位置,在 /home/admin/git/bin 下面找到了, 但是根据hash, 没有这个路径对应的man手册搜索路径,所以这条MANPATHMAP不会被使用.

    man查找对象:
    查找对象为 topic.section ,如果没找到,则查找 man[section]/topic.section ,如: man1/git.1 。
    nearby查找: nearby查找查找什么呢?

    通过实验,会在本目录先查找 man ,如果没找到, 然后查找 man[section] 目录

    如果找到 man[section] 目录则将当前目录加入搜索路径,找到 man 目录将 当前目录/man 加入搜索路径。

其它⇧

    查看找到的手册的位置:
man --path cat