2017-02-14 22 views
0

Использование экрана на Synology (DSM6) Я получаю ошибкуИспользование экрана на Synology (DSM6): "Не удается найти Termcap запись«XTERM-256-цветные"

Не можете найти Termcap запись 'XTERM-256-цветные'

когда я типа screen.

Мне известно о быстром исправить из этого вопроса Unix screen utility error: Cannot find termcap entry for 'xterm-256color'.
So TERM=xterm screen действительно работает и запускает screen.

Но я хотел бы установить TERM на другое значение на моей машине, поэтому я мог бы просто ввести screen.
Могу ли я выбрать экран режима цветного отображения и установить его где-нибудь?

ответ

1

screen отфильтровывает escape-последовательности, которые он не поддерживает. Он не поддерживает escape-последовательность в стиле xterm, которая меняет значения цвета, но использует только предопределенную цветовую палитру вашего терминала.

Если вы

infocmp screen-256color xterm-256color 

вы, вероятно, заметили несколько отличий. Речь идет об изменении значений цвета: initc. (Выбор заданного цвета из палитры выполняется с помощью setaf и setab).

Предупреждающее сообщение связано с тем, что (по-видимому) на вашем компьютере нет описания терминала для xterm-256color, например, если вы ssh на машине, и он получает TERM с вашего локального компьютера. screen хочет знать, что TERM относится к за пределами, чтобы помочь ему конвертировать в его внутри (TERM=screen). Быстрое чтение документации и исходного кода показывает, что, хотя у него есть несколько функций для , изменяющих преобразование между входом/выводом TERM, а для выбора конкретного внутри-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; 
} 

Так .. Если вы хотите просто запустить «экран», вы можете создать псевдоним оболочки или простой скрипт, который устанавливает TERM, как вы сейчас делаете.

+0

Спасибо за ваш ответ, но я не уверен, что мой вопрос был очень ясен, поэтому я его отредактировал. Я хотел бы иметь возможность просто делать «экран» с предопределенной палитрой по своему выбору, сохраненной где-то. –