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