我知道這個問題已經被發布了無數次,但我能找到的答案都沒有為我解決。
我有一個由 提供的 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
與根和非根完全相同:
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」被別名為一條假線......這解釋了為什麼其他用戶不受影響......