如何将目录添加到 MANPATH 或 INFOPATH?

如何将目录添加到 MANPATH 或 INFOPATH?

我认为我理解了如何将目录添加到 PATH?关于将目录添加到 $PATH。但我不明白如何将目录添加到 $MANPATH 或 $INFOPATH。

此外,在谷歌上搜索帮助时,我注意到指示有时会说export PATH=/usr/share/lib/something:$PATH,有时会说export PATH=$PATH:/usr/share/lib/something。它是什么?

答案1

  1. 这两个几乎相同:

    export PATH=/usr/share/lib/something:$PATH 
    export PATH=$PATH:/usr/share/lib/something
    

    唯一的区别是,第一个将要添加的目录放在前面,而第二个将其放在 中的当前目录后面。只有当 中的某个目录中有同名的$PATH命令时,它才有关系。/usr/share/lib/something$PATH

  2. 要向您发布的链接添加目录$MANPATH$INFOPATH根据需要从链接中添加目录,您可以通过更改链接内的配置文件来实现。

    它说打开全局版本bash.bashrc

    sudo vi /etc/bash.bashrc
    

    最后补充一点:

    PATH=/usr/local/texlive/2010/bin/x86_64-linux:$PATH; export PATH
    MANPATH=/usr/local/texlive/2010/texmf/doc/man:$MANPATH; export MANPATH
    INFOPATH=/usr/local/texlive/2010/texmf/doc/info:$INFOPATH; export INFOPATH
    

    这将设置$PATH$MANPATH$INFOPATH。它还会告诉您使用/etc/manpath.config以下方式进行编辑:

    sudo vi /etc/manpath.config
    

    并补充

    MANPATH_MAP /usr/local/texlive/2010/bin/x86_64-linux /usr/local/texlive/2010/texmf/doc/man
    

    下面# set up PATH to MANPATH mapping


如果您对此不确定,请先进行备份(这绝不是坏事):

sudo cp /etc/bash.bashrc /etc/bash.backup_$(date +"%Y_%m_%d").bashrc
sudo cp /etc/manpath.config /etc/manpath.backup_$(date +"%Y_%m_%d").config

奇怪的字符串变成了当前日期。如果你搞错了,只需将备份复制回原始文件即可:

$ touch test1
$ cp test1 test1.$(date +"%Y_%m_%d")
$ ls
test1  test1.2014_11_14  

答案2

如果您的手册页在 中/usr/local/myproject/man,您需要做的就是将其添加到 (末尾)/etc/manpath.config

MANDATORY_MANPATH        /usr/local/myproject/man

答案3

x:y:z:$PATH或者$PATH:x:y:z

略有不同。$PATH包含:bash(shell/终端)应该检查程序的位置的分隔列表。

例如,如果你输入的cat方式终端理解这意味着查看的第一个、第二个、第三个元素$PATH,那么节省它为稍后的调用找到的第一个位置cat

如果我有两个不同版本的程序,分别位于两个不同的地方,其中一个是首选,并$PATH告诉 shell 以错误的顺序进行搜索,那么就会出现问题。否则,没有问题。


出口

打开终端并输入

echo $a
a=5
echo a
echo $a

您会看到a=5设置变量值并$a引用变量名称,而不是值。

打开第二个终端并输入echo $a。它应该再次为空白。

export和赋值( )之间的区别=解释如下:https://stackoverflow.com/questions/1158091/defining-a-variable-with-or-without-export

答案4

如果你仔细检查的话,默认情况下环境变量MANPATH 不存在在当前版本的 Ubuntu 中。尝试这个:

echo $PATH

echo $MANPATH

这是因为man依赖于命令manpath。从命令行运行它,你会发现它的输出(实际上)是 MANPATH,但我们已经知道没有定义变量 MANPATH(默认情况下):

manpath
/usr/local/man:/usr/local/share/man:/usr/share/man

手册所在的目录包含在 中/etc/manpath.config,您可以编辑该文件以添加新文件夹。试试这个;编辑/etc/manpath.config,然后通过运行 来查看结果manpath。如果这就是您所需要的(添加一些包含手册的文件夹),那么这对您来说可能是一个很好的解决方案。

就我而言,我还需要设置命令在其中搜索了这些手册文件夹。我发现没有办法通过编辑来设置顺序/etc/manpath.config(如果我错过了,请纠正我)。但是,当然,您可以在编辑 PATH 环境变量时执行此操作,事实证明,您可以对 MANPATH 执行相同的操作。以下是一些可能性:

  1. 要指定独立于的 MANPATH manpath
export MANPATH="/first/path/tomanuals:/second/path/tomanuals:etc/etc/etc"

可能您的系统会给出以下警告:

manpath: warning: $MANPATH set, ignoring /etc/manpath.config

这正是我们想要的。

  1. 为了增强manpath搜索添加的文件夹的功能第一的
export MANPATH="/some/dir/with/manuals/man:$(manpath)"

当然,您可以根据需要改变顺序。

  1. 最后,如果你搞砸了,或者只是想将控制权交还给manpath,请执行以下操作:
unset MANPATH

相关内容