我应该在用户目录中的何处安装手册页?

Rom*_*net 16 man

我正在尝试为我编写的一个小型 Perl 实用程序创建一个 Makefile,并且我正在努力寻找一种方法来在以非 root用户make身份运行时找到安装我的手册页的位置。

我目前正在解析 的输出manpath以找出$HOME目录中的第一个路径......它几乎可以正常工作。

我发现的路径是~/man~/share/man

唯一的问题是,如果这些目录首先不存在,manpath则不输出其中任何一个。

问题

  • 有没有一种便携式方法可以找出我应该在用户的 $HOME 目录中安装手册页的位置?
  • 如果不是,应该首选其中哪一种?

slm*_*slm 15

您可以将手册页放在此目录中:

$HOME/.local/share/man
Run Code Online (Sandbox Code Playgroud)

直接访问

然后你可以直接使用man

man $HOME/.local/share/man/manX/manpage.1.gz
Run Code Online (Sandbox Code Playgroud)

$MANPATH

您可以检查$MANPATH命令的内容manpath,或回显环境变量$MANPATH

例子

$ manpath
manpath: warning: $MANPATH set, ignoring /etc/man_db.conf
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man

$ echo $MANPATH
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man
Run Code Online (Sandbox Code Playgroud)

您可以临时向 MANPATH 添加内容:

MANPATH=$HOME/.local/share/man:$MANPATH
Run Code Online (Sandbox Code Playgroud)

如果你想让它永久化,那么在你的/etc/profile.d/目录中添加一个文件,myman.bash其中包含上面的MANPATH=行。这将在系统范围内为每个人提供。如果您希望它仅适合您,请将其添加到您的$HOME/.bash_profile$HOME/.bashrc.

  • 要抑制有关设置“MANPATH”的“manpath”警告,您可以传递“-q”选项。 (2认同)
  • 是的,我知道我可以告诉“男人”在哪里看。我正在寻找一种通用的、可移植的方式进行通用安装(即:“man”在哪里查看标准配置) (2认同)
  • @YaroslavNikitenko 请参阅此处了解更多信息 - https://unix.stackexchange.com/a/36874/7453。这里也提到了 - https://www.freedesktop.org/software/systemd/man/file-hierarchy.html。 (2认同)