在 Scientific Linux 5.5 安装中未设置 $MANPATH。我安装了环境模块,这可能会导致 $MANPATH 被覆盖,但我对此并不确定。所以我的主要问题是:在什么时候解释 /etc/man.config 以形成 $MANPATH?它是 bash-shell 本身(硬编码)还是登录时获取的文件,例如 /etc/profile?我在 /etc/man.config 的任何文件中都找不到 /etc 下的任何依赖项。
我认为环境模块干扰了 $MANPATH 的原因是登录系统后唯一的条目是:
# manpath
/cm/local/apps/environment-modules/3.2.6/man
编辑:
与此同时,对于第一个答案,我尝试这样做:
# find . -type f -exec fgrep -l -i manpath {} \;
./profile.d/man.sh
./profile.d/man.csh
./man.config
嗯,这是
# cat /etc/profile.d/man.sh
export MANPATH=:ignore:/cm/local/apps/environment-modules/3.2.6/man
如果我删除此文件,至少“/usr/man”会出现在 $MANPATH 中,但这只是 /etc/man.config 中定义的冰山一角。所以我认为 /etc/man.config 仍未完全处理。将 /etc/profile.d/man.sh 更改为以下内容无效:
# cat /etc/profile.d/man.sh
export MANPATH=:ignore:/cm/local/apps/environment-modules/3.2.6/man:$MANPATH
# echo $MANPATH
ignore:/cm/local/apps/environment-modules/3.2.6/man:
答案1
解决方案如下:如果设置了 $MANPATH,手册页的默认路径将被覆盖。因此,取消设置 $MANPATH 会显示默认路径,只需执行命令“manpath”即可:
/usr/local/share/man:/usr/share/man/en:/usr/share/man:/usr/man:/usr/local/man
/etc/profile.d/man.sh 的内容也是正确的,因为$MANPATH 变量中的前导冒号将防止覆盖默认的 manpath!这是实际的解决方案对于我的问题,因为一个环境模块在 $MANPATH 变量前面添加了一个手动路径,但没有前导冒号,因此默认手册页不再可用。
答案2
好吧,尽管我写您的答案字段,我不知道答案,我只知道一个元答案,每当出现这种“在哪个配置文件中被损坏了?”时都可以使用它。
如果你还没有安装 midnight commander,请先安装。在 /etc 中启动 mc:
mc /etc
通过 F9、c、f 或 Alt-? 或 Meta-? 启动“查找文件”对话框(如果 Alt 不是您的 Meta)
让开始于:成为一个。(单点)默认情况下,让文件名:默认为 *,并让内容:是曼帕特。
搜索内容应检查并首次打击不应该。
只需让搜索完成,在对话框中,您将看到 MANPATH 在所有写入它的文件中出现的所有情况。您可以浏览并判断是什么让您的生活变得更加困难。
基本上,这与在 /etc 上运行 rgrep 来查找 MANPATH 并读取其输出相同,只是在我看来更方便。