簡體   English   中英

在 Synology (DSM6) 上使用屏幕:“找不到‘xterm-256color’的 termcap 條目”

[英]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 (從調色板中選擇給定的顏色是使用setafsetab完成的)。

警告消息是因為(顯然)您的機器沒有安裝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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM