如何附加到MANPATH?

mjs*_*mjs 13 man

如果MANPATH设置了环境变量,则man非常“有用”地忽略默认搜索路径,如/etc/manpath.config. 有什么方法可以为搜索的路径添加一个或多个路径man吗?

Col*_*son 10

这取决于man实现,但既然你有,/etc/manpath.config我猜你正在使用带有 man-db 的 Debian 派生系统。

在这种情况下,manpath(1)描述了您可以在此处执行的操作(同样的方法适用于 man(1)):

如果 $MANPATH 以冒号为前缀,则该变量的值将附加到根据配置文件的内容确定的列表中。如果冒号出现在变量值的末尾,则将确定的列表附加到变量的内容中。如果变量的值包含双冒号 (::),则将确定的列表插入值的中间,两个冒号之间。

  • @scrutari 我的意思是,我是 man-db 的维护者:-) 确实,`~/.manpath` 更灵活,但与`相比,由于这种灵活性,配置起来也更加复杂。 MANPATH` 与 `PATH` 有明显的相似之处。如果您需要的只是调整搜索路径,那么我认为使用环境变量方法是完全合理的。 (3认同)
  • 最好不要设置`MANPATH`:请参阅下面有关`~/.manpath`的答案, (2认同)

小智 8

不要设置MANPATH环境变量。

您可以向本地~/.manpath文件添加任意数量的自定义路径:

MANDATORY_MANPATH /usr/local/texlive/2020/texmf-dist/doc/man
Run Code Online (Sandbox Code Playgroud)

这是针对安装在/usr/local/texlive. 该文件可以有任意数量的此类条目。

另外,如果您/path/to/some/bin的 上有一些自定义PATH,其中/path/to/some/bin/..有任何这些子目录manbin/manshare/manshare/man,则此 man 路径将自动添加(除非您通过设置MANPATHenv 变量来阻止它)。

man您可以通过运行来检查如何选择路径

manpath -d
Run Code Online (Sandbox Code Playgroud)

  • @scrutari 不幸的是,这个答案没有说明这适用于什么 Unix。请注意,该问题没有明确指定他们正在使用什么 Unix。另请注意,环境变量“MANPATH”是每个用户都可以修改的,就像任何环境变量和“~/.manpath”文件一样。 (2认同)

Kus*_*nda 7

根据 的特定实现man,您可以通过MANPATH不同方式增加 的值。

在 Linux 系统上,设置MANPATH为以下值manpath -g

export MANPATH="$(manpath -g):/new/path/man"
Run Code Online (Sandbox Code Playgroud)

或创建一个别名

alias man='man -M "$(manpath -g):/new/path/man"'
Run Code Online (Sandbox Code Playgroud)

在 FreeBSD 上,执行上述操作,但删除-g.

在 OpenBSD 和 NetBSD 上,使用

alias man='man -m /new/path/man'
Run Code Online (Sandbox Code Playgroud)

请查阅man您的 Unix 上的实用程序的手册。