我知道这个问题已被发布过无数次,但我找到的所有答案都没有为我解决这个问题。
我有一个由 提供的 root shell sudo bash
。当我尝试使用 时man
,出现以下消息:
WARNING: terminal is not fully functional
- (press RETURN)
并且对导航的控制有限。
当我不是 root 时它可以工作。作为 root,可以正常工作。我尝试aptitude
过export TERM
:linux
,,,,,,,,。xterm
xterm-color
xterm-256color
ansi
screen-256color
ncurses
vt100
的输出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”被别名为虚假线路......这解释了为什么其他用户不受影响......