使用man无法查询命令

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
windyers
帖子: 4
注册时间: 2018-08-20 19:32
系统: ubuntu-18.04.1

使用man无法查询命令

#1

帖子 windyers » 2018-08-20 20:00

1.当我使用man查询命令时会报错,例如:man ls

2.

代码: 全选

$ man ls 
man: can't execute which less: No such file or directory
man: command exited with status 255: sed -e '/^[[:space:]]*$/{ N; /^[[:space:]]*\n[[:space:]]*$/D; }' | LESS=-ix8RmPm Manual page ls(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page ls(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=ls(1) which less -s
3.不过,命令ls依然可以用,只是用man无法查询了。
4.在stackoverflow我看到一个类似的但用那的方法没效果,链接:

代码: 全选

https://stackoverflow.com/questions/26524559/git-commands-execution-like-git-diff-or-git-help-commit-returns-errors-abo/41726440
拜托了,感激不尽。
4.我的系统是ubuntu-18.04.1
头像
astolia
论坛版主
帖子: 6435
注册时间: 2008-09-18 13:11

Re: 使用man无法查询命令

#2

帖子 astolia » 2018-08-20 21:40

给出以下命令的结果

代码: 全选

echo $PAGER
realpath `which pager`
头像
windyers
帖子: 4
注册时间: 2018-08-20 19:32
系统: ubuntu-18.04.1

Re: 使用man无法查询命令

#3

帖子 windyers » 2018-08-20 22:22

astolia 写了: 2018-08-20 21:40 给出以下命令的结果

代码: 全选

echo $PAGER
realpath `which pager`
下面是输入命令的回复:

代码: 全选

$ echo $PAGER
'which less' -s
$ realpath 'which pager'
/home/windyer/which pager
onlylove
论坛版主
帖子: 5229
注册时间: 2007-01-14 16:23

Re: 使用man无法查询命令

#4

帖子 onlylove » 2018-08-21 0:34

第二条命令你输的不对,那个`不是单引号,是1旁边那个波浪线,你把2楼的命令辅助进终端执行
头像
windyers
帖子: 4
注册时间: 2018-08-20 19:32
系统: ubuntu-18.04.1

Re: 使用man无法查询命令

#5

帖子 windyers » 2018-08-21 2:34

onlylove 写了: 2018-08-21 0:34 第二条命令你输的不对,那个`不是单引号,是1旁边那个波浪线,你把2楼的命令辅助进终端执行

代码: 全选

~$ echo $PAGER
'which less' -s
~$ realpath `which pager`
/bin/less
头像
windyers
帖子: 4
注册时间: 2018-08-20 19:32
系统: ubuntu-18.04.1

Re: 使用man无法查询命令

#6

帖子 windyers » 2018-08-21 11:03

1.问题我已经解决了,谢谢astolia and onlylove版主的指点。现在看来,astolia给的命令应该是让我找less文件(毕竟是它出了问题),然后修改其中某些内容吧。下面我说说我如何解决它的。

2.当我运行完astolia给的命令后,我发现得到的是less的地址,而问题反馈又是

代码: 全选

man: can't execute which less: No such file or directory
其中含有less,便意识到是它的问题了(谢谢astolia),当我用vim打开less文件,直接懵逼(那个码不是我能改的)
不会的便要查问,但百度实在太渣,通过google我找到了——https://ubuntuforums.org/showthread.php?t=2360329
在那里题主的问题是

代码: 全选

loke@loke:~$ man ls
man: can't execute most: No such file or directory
man: command exited with status 255: sed -e '/^[[:space:]]*$/{ N; /^[[:space:]]*\n[[:space:]]*$/D; }' | (cd <fd 3> && LESS=-ix8RmPm Manual page ls(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page ls(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=ls(1) most)
除了which less,其他大致一致,不由心喜啊。该题主解决的方法是

代码: 全选

OK - I removed export PAGER="most" in ~/.bashrc and then it worked ...Thanks !
但我不知道~/.bashrc在哪。好在我注意到export PAGER="most",解决之法便在它了。

3.在那题主的楼#9的回答中,我找到了一个可能的答案。试了试,man恢复了。代码是

代码: 全选

$ export MANPAGER=less
$ /usr/bin/man bash
这里的export用于设置或显示环境变量,不过还是不知道到底less为什么就变 :What ,我没干啥啊。
export详参请看http://www.runoob.com/linux/linux-comm-export.html

4.That's all.Thanks
头像
astolia
论坛版主
帖子: 6435
注册时间: 2008-09-18 13:11

Re: 使用man无法查询命令

#7

帖子 astolia » 2018-08-21 13:21

windyers 写了: 2018-08-21 2:34

代码: 全选

~$ echo $PAGER
'which less' -s
~$ realpath `which pager`
/bin/less
你搞错了。我并没有说是less的问题,而是这两个地方最容易被新人乱改导致man出错。
man会调用一个pager程序来显示,但具体是哪个pager有多方面的影响,具体的顺序是
1、通过-P参数指定的pager
2、通过MANPAGER环境变量指定的pager
3、通过PAGER环境变量指定的pager
4、pager程序
5、cat程序
而你的问题正是设置了错误的PAGER环境变量。

仔细看你机器上的PAGER变量,里面是'which less' -s,同样犯了把`写成'的错误。所以报的错误是找不到“which less”这个程序,而不是找不到less
真正要修正这个错误,你应该检查一下你shell的配置文件,看看是哪里给PAGER赋值成了'which less' -s,找出来后改成PAGER="`which less` -s",或者直接PAGER="less -s"

代码: 全选

grep PAGER= ~/.bashrc ~/.profile ~/.bash_profile /etc/bash.bashrc /etc/profile /etc/profile.d/*
回复