![如何将目录添加到 MANPATH 或 INFOPATH?](https://linux22.com/image/958527/%E5%A6%82%E4%BD%95%E5%B0%86%E7%9B%AE%E5%BD%95%E6%B7%BB%E5%8A%A0%E5%88%B0%20MANPATH%20%E6%88%96%20INFOPATH%EF%BC%9F.png)
我认为我理解了如何将目录添加到 PATH?关于将目录添加到 $PATH。但我不明白如何将目录添加到 $MANPATH 或 $INFOPATH。
此外,在谷歌上搜索帮助时,我注意到指示有时会说export PATH=/usr/share/lib/something:$PATH
,有时会说export PATH=$PATH:/usr/share/lib/something
。它是什么?
答案1
这两个几乎相同:
export PATH=/usr/share/lib/something:$PATH export PATH=$PATH:/usr/share/lib/something
唯一的区别是,第一个将要添加的目录放在前面,而第二个将其放在 中的当前目录后面。只有当 中的某个目录中有同名的
$PATH
命令时,它才有关系。/usr/share/lib/something
$PATH
要向您发布的链接添加目录
$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 执行相同的操作。以下是一些可能性:
- 要指定独立于的 MANPATH
manpath
:
export MANPATH="/first/path/tomanuals:/second/path/tomanuals:etc/etc/etc"
你可能您的系统会给出以下警告:
manpath: warning: $MANPATH set, ignoring /etc/manpath.config
这正是我们想要的。
- 为了增强
manpath
搜索添加的文件夹的功能第一的:
export MANPATH="/some/dir/with/manuals/man:$(manpath)"
当然,您可以根据需要改变顺序。
- 最后,如果你搞砸了,或者只是想将控制权交还给
manpath
,请执行以下操作:
unset MANPATH