【问题标题】:Linux: Man command in application installed only for current userLinux:仅为当前用户安装的应用程序中的 Man 命令
【发布时间】:2013-01-29 04:46:27
【问题描述】:

Linux 中的手册文件存储在/usr/share/man。以前,我的应用程序只能由 root 用户安装,并将手册文件放在此目录中。现在,我想启用非 root 安装;为此,我所有的数据和配置文件都将安装在~/<appname>/ 下。但是,man 命令将无法再访问复制到 home 的手动文件。

此问题的常见解决方法是什么?

我考虑在我的应用程序中创建一个运行man -M /<man_path>/<appname>/"man" 命令(因为这对用户来说比自己运行命令更容易)。这是一个好的选择吗?

提前致谢。

【问题讨论】:

    标签: linux manpage


    【解决方案1】:
    [spatel@ap4004 appname]$ export MANPATH=/home/spatel/appname/man
    
    [spatel@ap4004 appname]$ manpath
    /home/spatel/appname/man/en:/home/spatel/appname/man
    

    其他解决方法是命令alias

    [spatel@ap4004 appname]$ alias man='man -M /home/spatel/appname/man'
    
    [spatel@ap4004 appname]$ alias man
    alias man='man -M /home/spatel/appname/man'
    

    【讨论】:

      【解决方案2】:

      您需要使用manpath 命令。

      【讨论】:

        【解决方案3】:

        man 在默认情况下(至少在 Fedora 14 及更高版本上)具有新行为,它在与 PATH 环境变量对应的路径中搜索,即对于 PATH=/xyz/bin,它搜索 /xyz/bin/man/xyz/share/man 和其他附近地方。除非设置了MANPATH

        您需要在.bash_profile 的末尾加上unset MANPATH/etc 中的一些启动脚本可能会将其设置为惹恼您。

        如果您没有使用 -M 或 MANPATH 指定显式路径列表,man 会根据配置文件 /etc/man.config 的内容开发自己的路径列表。配置文件中的 MANPATH 语句标识要包含在搜索路径中的特定目录。

        此外,MANPATH_MAP 语句根据您的命令搜索路径(即您的 PATH 环境变量)添加到搜索路径。对于可能在命令搜索路径中的每个目录,MANPATH_MAP 语句指定应添加到手册页文件搜索路径的目录。 man 查看 PATH 变量并将相应的目录添加到手册页文件搜索路径中。因此,通过正确使用 MANPATH_MAP,当您发出命令 man xyz 时,您会获得一个手册页,说明您发出命令 xyz 时将运行的程序。

        此外,对于命令搜索路径中的每个目录(我们将其称为“命令目录”),如果您没有 MANPATH_MAP 语句,man 会自动查找“附近”的手册页目录,即命令目录本身或命令目录的父目录中的子目录。

        您可以通过在 /etc/man.config 中包含 NOAUTOPATH 语句来禁用自动“附近”搜索。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-15
          • 2011-12-17
          • 1970-01-01
          • 1970-01-01
          • 2014-10-31
          • 1970-01-01
          相关资源
          最近更新 更多