以 root 身份使用“man”时出现“警告:终端未完全发挥作用”

以 root 身份使用“man”时出现“警告:终端未完全发挥作用”

我知道这个问题已被发布过无数次,但我找到的所有答案都没有为我解决这个问题。

我有一个由 提供的 root shell sudo bash。当我尝试使用 时man,出现以下消息:

WARNING: terminal is not fully functional
-  (press RETURN)

并且对导航的控制有限。

当我不是 root 时它可以工作。作为 root,可以正常工作。我尝试aptitudeexport TERMlinux,,,,,,,,。xtermxterm-colorxterm-256coloransiscreen-256colorncursesvt100

的输出stty -a与root和非root完全相同:

speed 38400 baud; rows 30; columns 271; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

我被困住了。

任何想法?

提前致谢

答案1

我最终自己解决了这个问题,方法是添加一个ncurses提供 /usr/share/terminfo 的缺失包。这个包由于包依赖性问题而未安装,似乎可以解决这个问题。虽然在我的情况下,这种情况发生在 rootroot用户和非 root 用户身上,所以可能不是它,但我认为值得发布,以防将来有人遇到我的情况并在 Google 搜索结果中遇到这个问题。

在 CentOS 上,它是ncurses-base

在 Debian 11(可能还有 Ubuntu)上,它是ncurses-term

如果您缺少这些软件包,请尝试安装它们并看看是否有帮助。

我在尝试reset在终端上执行此操作时发现了这一点,结果出现“终端类型?”提示拒绝了我尝试的所有操作,例如

Terminal type? screen                                      
reset: unknown terminal type screen
Terminal type?                                             
Terminal type? vt100
reset: unknown terminal type vt100

这让我将它与一个正常工作的系统进行比较,并寻找任何包含名称 的内容vt100。对结果进行一番挖掘后,grep -r我找到了“坏”系统上缺少的文件/usr/share/terminfo。调用rpm -q --whatprovides /usr/share/terminfo/v/vt100让我找到了那个包名。

答案2

差不多 3 年后,ChatGPT 给了我解决方案......

# type man
man is aliased to `TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man'

在某些时候,“man”被别名为虚假线路......这解释了为什么其他用户不受影响......

相关内容