[英]Using screen on Synology (DSM6): "Cannot find termcap entry for 'xterm-256color"
在 Synology (DSM6) 上使用屏幕時出現錯誤
找不到“xterm-256color”的 termcap 條目
當我輸入screen
時。
我知道這個問題的快速修復Unix screen utility error: Cannot find termcap entry for 'xterm-256color' 。
所以TERM=xterm screen
確實有效並啟動了screen
。
但是我想在我的機器上將TERM
設置為不同的值,這樣我就可以只輸入screen
了。
我可以選擇屏幕使用的顏色模式並將其設置在某個地方嗎?
使用 .bashrc 您可以將 TERM 設置回工作版本。 我的問題是 screen.xterm-256color 不存在。
# ~/.screenrc
# Fix screen and vim
# "E437: terminal capability "cm" required"
if [[ $TERM = 'screen.xterm-256color' ]]; then
export TERM=xterm-256color
fi
為了使 .bashrc 更改在屏幕中生效,您需要告訴屏幕將每個終端視為一個新的 shell
#~/.screenrc
# Treat all new screen tabs as new shells
shell -$SHELL
screen
過濾掉它不支持的轉義序列。 它不支持更改顏色值的 xterm 樣式轉義序列,但僅使用終端的預定義調色板。
如果你這樣做
infocmp screen-256color xterm-256color
您可能會注意到一些差異。 處理顏色值變化的是initc
。 (從調色板中選擇給定的顏色是使用setaf
和setab
完成的)。
警告消息是因為(顯然)您的機器沒有安裝xterm-256color
的終端描述,例如,如果您通過 ssh 連接到機器並且它從本地機器獲取TERM
。 screen
想知道什么TERM
適用於outside ,以幫助它轉換到它的inside ( TERM=screen
)。 快速閱讀文檔和源代碼可以看出,雖然它具有修改輸入/輸出TERM
之間的轉換以及選擇特定內部 TERM 的多個功能,但沒有用於覆蓋環境變量TERM
的.screenrc
設置。
這是指向screen
中相關代碼塊的指針:
if ((attach_term = getenv("TERM")) == 0 || *attach_term == 0)
Panic(0, "Please set a terminal type.");
if (strlen(attach_term) > MAXTERMLEN)
Panic(0, "$TERM too long - sorry.");
GetTTY(0, &attach_Mode);
它確保設置了TERM
,以及指向(向下幾個級別)的指針, 它檢查TERM
是否對應於實際的終端描述:
if (*D_termname == 0 || e_tgetent(tbuf, D_termname) != 1) {
Msg(0, "Cannot find terminfo entry for '%s'.", D_termname);
return -1;
}
所以...如果你只想運行“屏幕”,你可以創建一個 shell 別名,或者像你現在所做的那樣設置TERM
的簡單腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.