为什么“manpath”有效而“echo $MANPATH”无效?

为什么“manpath”有效而“echo $MANPATH”无效?

我只是想知道为什么echo $MANPATH不起作用(在我的系统上(Debian Jessie x86_64 GNU/Linux 3.16.0-4-amd64))。该manpath命令单独运行效果很好:

user@host:~$ manpath
/usr/local/man:/usr/local/share/man:/usr/share/man

/etc/manpath.config - 根据 列出的内容,存在并包含未注释的行manpath

manpath 手册页显示:

如果设置了 $MANPATH,manpath 将简单地显示其内容...

那么,为什么manpath有效而echo $MANPATH无效呢?

答案1

来自我的man manpath(Ubuntu 16.10 - 因为你没有提到你的系统详细信息):

如果设置了 $MANPATH,manpath 将显示其值而不是动态确定它。

因此$MANPATH更多的是对/etc/manpath.config.

另请注意:

描述

如果设置了 $MANPATH,manpath 将仅显示其内容并发出警告。如果没有,manpath 将确定合适的手册页层次结构搜索路径并显示结果。

答案2

因为这都是关于变量$MANPATH存在的:如果需要自定义的 manpath,则被覆盖。

引用 Debian Lenny 手册页:

描述

如果 $MANPATH 设置了,manpath 将简单地显示其内容并发出警告。如果没有,manpath 将确定合适的手册页层次结构搜索路径并显示结果。

冒号分隔的路径是使用从 man-db 配置文件 - ( /etc/manpath.config) 和用户环境获得的信息确定的。

当手册页说“如果$MANPATH已设置”时,含义是“如果此变量由用户或脚本设置...”或“如果此变量为空,则使用位于manpath.config”的默认值。

花点时间浏览该/etc/manpath.config文件,了解所有联机帮助页路径的结构。

相关内容:

$MANPATH有关操作或创建自定义手册页路径的一些链接。

相关内容