2017-02-14 2 views
0

Mit Bildschirm auf der Synology (DSM6) ich den Fehlerauf Synology (DSM6) Mit Bildschirm: ‚get

"xterm-256color

nicht TERMCAP Eintrag finden können TERMCAP Eintrag für nicht gefunden" 'xterm-256color

'

wenn ich tippe screen.

Ich bin mir der schnellen Lösung von dieser Frage Unix screen utility error: Cannot find termcap entry for 'xterm-256color' bewusst.
So TERM=xterm screen funktioniert und startet screen.

Aber ich möchte auf einen anderen Wert auf meiner Maschine setzen, so könnte ich einfach screen stattdessen eingeben.
Kann ich den Farbmodus auswählen, der verwendet wird, und irgendwo einstellen?

Antwort

1

screen Filter Escape-Sequenzen, die es nicht unterstützt. Es unterstützt nicht die Esc-Sequenz xterm-style, die Farbwerte ändert, sondern nur die vordefinierte Farbpalette Ihres Terminals verwendet.

Wenn Sie das tun

infocmp screen-256color xterm-256color 

Sie werden wahrscheinlich einige Unterschiede feststellen. Derjenige, der sich mit sich ändernden Farbwerten beschäftigt, ist initc. (Die Auswahl einer Farbe aus der Palette erfolgt mit setaf und setab).

Die Warnmeldung ist, weil (anscheinend) Ihr Gerät keine Terminalbeschreibung für xterm-256color installiert hat, z. B. wenn Sie ssh an das Gerät senden und es von Ihrem lokalen Computer erhält. screen möchte wissen, was für außerhalb gilt, um es zu seiner innerhalb (TERM=screen) zu konvertieren. Ein kurzer Lesevorgang der Dokumentation und des Quellcodes zeigt, dass es zwar mehrere Funktionen für hat, die die Konvertierung zwischen in/out ändern, und für die Auswahl eines bestimmten Inside-TERM gibt es keine .screenrc Einstellung für das Überschreiben der Umgebungsvariablen .

Hier ist ein Zeiger auf die 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); 

wo es wird sichergestellt, dass TERM gesetzt ist, und ein Zeiger auf (ein paar Stufen nach unten), wo 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; 
} 

So .. Wenn Sie nur "Bildschirm" ausführen möchten, können Sie einen Shell-Alias ​​oder ein einfaches Skript erstellen, das so einstellt, wie Sie es gerade tun.

+0

Vielen Dank für Ihre Antwort, aber ich bin mir nicht sicher, meine Frage war sehr klar, also habe ich es bearbeitet. Ich würde gerne in der Lage sein, "Bildschirm" mit einer vordefinierten Palette meiner Wahl irgendwo zu speichern. –

Verwandte Themen