我正在写一个交互式 shell 实用程序(这是一个 bash 脚本),我想man
为其提供一个页面。这是一个我希望用户下载并放入他们的脚本PATH
,而不是需要超级用户权限的脚本。知道我应该把手册页放在哪里吗?
目前,我只是将其放在脚本旁边,从脚本中我可以使用类似dirname $0
从实用程序内部定位和显示的内容。不过,最好也将其提供给man
.目前我推荐man -l /path/to/script/help.1
,但这很尴尬且不直观。
笔记:我找到了这个上一个问题,但我认为接受的答案实际上并没有正确回答问题。
答案1
据我所知,对于用户可写的手册页目录没有标准建议。文件系统层次结构标准 3.0指的是XDG 基目录规范和xdg-user-dirs 规范关于用户主目录中的内容,但这些都没有关于手册页目录的具体内容。
通常,这是因为将您自己的手册页目录树添加到MANPATH
环境变量过去是微不足道的。然而,现代的实现man
通常将变量留空,并在例如或类似的配置文件MANPATH
中指定手册页目录层次结构。/etc/manpath.config
为了向后兼容,如果MANPATH
为这些现代实现设置变量man
,它往往会覆盖完整的手册页搜索路径,而不是提供一种方法添加它可能很不方便:作为用户,您必须阅读并理解适当的配置文件,并首先创建一个 MANPATH 值,该值完全涵盖您希望保留的所有系统手册页,然后添加您自己的自定义手册页目录到该有序列表中的合适位置。但是,您通常只需要执行一次,除非系统软件和/或目录结构有重大更新,所以不应该那难做。
总体而言,经典约定似乎是,如果可执行文件的目录(适合添加到PATH
)位于<some path>/bin/
或<some path>/sbin/
,则相应手册页层次结构的根将<some path>/man/
分别位于。然而,飞速3.0/usr/share/man/
通过指定为系统的主要手册页层次结构(对应于/[s]bin/
可执行目录) ,已经偏离了这一点/usr/[s]bin/
。