【问题标题】:Using screen on Synology (DSM6): "Cannot find termcap entry for 'xterm-256color"在 Synology (DSM6) 上使用屏幕:“找不到 'xterm-256color 的 termcap 条目”
【发布时间】:2017-07-03 11:08:25
【问题描述】:

在 Synology (DSM6) 上使用屏幕时出现错误

找不到“xterm-256color”的 termcap 条目

当我输入screen

我知道这个问题Unix screen utility error: Cannot find termcap entry for 'xterm-256color' 的快速修复。
所以TERM=xterm screen 确实有效并启动了screen

但我想在我的机器上将TERM 设置为不同的值,所以我可以直接输入screen
我可以选择屏幕使用的颜色模式并将其设置在某处吗?

【问题讨论】:

    标签: linux gnu-screen synology


    【解决方案1】:

    screen 过滤掉它不支持的转义序列。它不支持更改颜色值的 xterm 样式转义序列,但仅使用终端的预定义调色板。

    如果你这样做

    infocmp screen-256color xterm-256color
    

    您可能会注意到一些不同之处。处理更改颜色值的方法是initc。 (通过setafsetab 从调色板中选择给定颜色)。

    警告消息是因为(显然)您的机器没有安装 xterm-256color 的终端描述,例如,如果您通过 ssh 连接到机器,它从本地机器获取 TERMscreen 想知道 TERMoutside 有什么作用,以帮助它转换为 inside (TERM=screen)。对文档和源代码的快速阅读表明,虽然它有几个功能可以修改 in/out TERM 之间的转换,以及选择特定的 inside-TERM,但没有 .screenrc覆盖环境变量TERM的设置。

    这是指向relevant chunk of code in 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,以及指向it checks if TERM corresponds to an actual terminal description的指针(向下几级):

    if (*D_termname == 0 || e_tgetent(tbuf, D_termname) != 1) {
        Msg(0, "Cannot find terminfo entry for '%s'.", D_termname);
        return -1;
    }
    

    所以...如果您只想运行“screen”,您可以创建一个 shell 别名,或者像现在一样设置 TERM 的简单脚本。

    【讨论】:

    • 感谢您的回答,但我不确定我的问题是否非常清楚,因此我对其进行了编辑。我希望能够使用保存在某处的我选择的预定义调色板来做screen
    【解决方案2】:

    使用 .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 更改在 screen 中生效,您需要告诉 screen 将每个终端视为一个新的 shell

    #~/.screenrc
    # Treat all new screen tabs as new shells
    shell -$SHELL
    

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 2012-09-02
      • 2017-02-11
      • 2012-04-17
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多