如何在不覆盖默认值的情况下设置MANPATH?

我通过导出PATH=/my/dirs:$PATH$PATH添加了额外的PATH=/my/dirs:$PATH但是我不确定我是否应该对MANPATH做同样的事情。 因为默认MANPATH是空的但man命令有效。 我找到了一个名为manpath的命令,它的手册说If $MANPATH is set, manpath will simply display its contents and issue a warning. 。 这是否意味着设置MANPATH不是为man命令添加目录以搜索手册页的正确方法?

如果您只是设置MANPATH,它将覆盖默认值,您将无法访问标准手册页。 例如, man ls在设置MANPATH之前工作,但之后不起作用。

要附加搜索目录而不覆盖默认值,请将冒号前缀为MANPATH,如下所示:

 export MANPATH=":/path/to/custom/man" 

通过添加冒号,您可以访问标准系统手册页和MANPATH变量中引用的自定义页面。

manpath(1)给你的答案是:

如果设置了$ MANPATH,则manpath显示其值而不是动态确定它。 如果$ MANPATH以冒号为前缀,则变量的值将附加到根据配置文件的内容确定的列表中。 如果冒号位于变量值的末尾,则确定的列表将附加到变量的内容中。 如果变量的值包含双冒号(::),则确定的列表将插入两个冒号之间的值的中间。

IMO你应该在PATH的末尾添加自定义目录

PATH=$PATH:/my/dirs

这样,您的自定义目录不会超过系统二进制文件/库,这是一个小安全问题。

你以相同的方式设置MANPATH(默认情况下MANPATH为空)。

MANPATH=$MANTPATH:/my/dirs

你不应该需要设置一个具有良好行为的包的MANPATH,所以如果它没有被破坏就不要修复它,如果它被破坏了,也许你最好提交一个错误报告;)

将其添加到〜/ .bashrc

 export PATH=$PATH:/my/dirs export MANPATH=$MANPATH:/my/dirs