使用“man”作為 root 時出現“警告:終端功能不全”

使用“man”作為 root 時出現“警告:終端功能不全”

我知道這個問題已經被發布了無數次,但我能找到的答案都沒有為我解決。

我有一個由 提供的 root shell sudo bash。當我嘗試使用時man,我收到以下訊息:

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

以及對導航的有限控制。

當我不是 root 時它可以工作。作為 root,aptitude可以正常工作。我嘗試過export TERMlinux, xterm, xterm-color, xterm-256color, ansi, screen-256color, ncurses, vt100

的輸出stty -a與根和非根完全相同:

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 的缺失包來解決這個問題。這個軟體包,無論出於什麼原因,軟體包都依賴地獄,沒有安裝,似乎解決了這個問題。雖然在我的例子中,它發生在root非root用戶身上,所以可能不是這樣,但我認為值得發布,以防將來有人遇到我的情況,並在谷歌結果中遇到這個問題。

在 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」被別名為一條假線......這解釋了為什麼其他用戶不受影響......

相關內容