ubuntu man 函数或者系统命令失败(如man ls)解决办法

来源:互联网 发布:自动同步时间软件 编辑:程序博客网 时间:2024/06/06 23:59

装ubuntu 13.10,想man c++函数:man std::iostream, 按照网上方法《Linux下C++的man安装及使用方法 》(http://blog.csdn.net/wangrouyi/article/details/8882937)显示 没有 std::iostream 的手册页条目

以为出错,又man ls:没有 ls 的手册页条目 ,当没有手册页时,可以用 man 7 undocumented 命令来寻求帮助。

其它man全部出错,是个严重问题,没有man还怎么在ubuntu下开发。

解决办法: 输入env | grep MANPATH:  如果有结果,临时解决办法可以是unset MANPATH, 然后再man ls, 成功, 解决原理见 http://manpages.ubuntu.com/manpages/lucid/man5/manpath.5.html

原因在于:  If the environment variable $MANPATH is already set, the information contained within/etc/manpath.config will not override it. 意思是如果有MANPATH,这不会去/etc/manpath.config寻找man 文档路径

永久解决办法:找到与启动相关的初始化文件, 如  gedit  ~/.bashrc , 搜索里面是否有MANPATH变量, 有的话将其删除。比如我的里面有一句:

export MANPATH=$QTDIR/manMANPATH, 并重新 source ~/.bashrc, 就OK了。

如下是解决过程:

查网上资料很久,都没怎么查到:http://forum.ubuntu.org.cn/viewtopic.php?p=2720857稍微相关,但仍然解决不了问题。

对比一个可以用man ls的系统, 和我的系统, 查看/etc/manpath.config, 两文件内容一模一样,所以不是/etc/manpath.config配置出错。

但是重点应该在manpath.config的配置上,因为查了好多在搜索工具如百度 谷歌等的其它关键字如 man 失败, man ls 没有 ls 的手册页条目, man ln : 没有 ln 的手册页条目, 还是不行,因此把重点放在关键字manpath.config的搜索上, 终于在不经意找到http://manpages.ubuntu.com/manpages/lucid/man5/manpath.5.html, 于是unset MANPATH后,发现man ls出现了。 那就是启动时环境变量出错了, 去看~/.bashrc,搜索MANPATH,果然看到了export MANPATH=$QTDIR/manMANPATH,这句话,删除后重新source 就解决问题了,实际上上面一句话是有问题的, 就算把它改成export MANPATH=$QTDIR/man:$MANPATH 那也是错的,因为有MANPATH,在man 时 系统不会去/etc/manpath.config找man命令的映射关系。

问题就在于自己在安装Qt时,按照网上的说法安装,设置了MANPATH变量,导致问题出现, 所以在安装qt 或者其它软件时,尽量不去设置MANPATH,防止出现一些其它问题,到时候还找不到问题出在哪里。

0 0
原创粉丝点击