如何在不覆盖默认值的情况下设置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