如何找出$ MANPATH的位置?

如何找出环境变量$MANPATH设置在哪个配置文件中? 有没有办法回溯价值观?

我知道我可以使用findgrep来浏览整个文件系统。 我大部分时间都在使用zsh而不是bash 。 我运行Ubuntu Precise。

Ubuntu默认情况下不设置$MANPATH ,因此您的搜索可以限制在~/.{ba,z}shrc及其包含的文件中

编译成man命令的搜索路径可以用man -w看到。 在我的系统(12.10)上,这将返回/usr/local/man:/usr/local/share/man:/usr/share/man

正如其他人已经写过的那样,Ubuntu默认情况下不会设置MANPATH 。 您可以编辑.profile并根据需要添加MANPATH 。 但是Ubuntu在哪里获得有关你的manpath的信息?

此信息在/etc/manpath.config设置。 包man-db使用此信息来配置man的路径。 环境变量MANPATH优先于文件manpath.config 。 该文件包含以下(可能更多)条目:

 MANDATORY_MANPATH /usr/share/man MANPATH_MAP /usr/bin /usr/man DEFINE troff groff -mandoc 

第一行告诉软件自动生成MANPATH它应包含哪些目录。 通常/usr/man/usr/share/man和其他设置在这里。

接下来是从用户PATH到正确MANPATH的映射。 如果用户在其PATH/usr/bin ,则MANPATH在上面的示例中应该包含/usr/man

DEFINE值具有一些用于寻呼机实用程序的默认参数和程序集。

试试跑步

 zsh -x -ls -c "exit" 2> shell-startup-output 

运行此命令后,文件shell-startup-output应显示shell启动时所源自的每个文件。 然后,您可以检查每个文件以查看哪个设置$MANPATH$

如果这对您不起作用,我知道的另一种方法是使用grepfind