2017-02-14 1 views
0

En utilisant l'écran sur Synology (DSM6) Je reçois l'erreurEn utilisant l'écran sur le Synology (DSM6): "Vous ne trouvez pas termcap entrée pour « xterm-256color"

Vous ne trouvez pas termcap entrée pour 'xterm-256color'

lorsque je tape screen.

Je suis au courant de la solution rapide de cette question Unix screen utility error: Cannot find termcap entry for 'xterm-256color'.
Donc, TERM=xterm screen fonctionne et lance screen.

Mais je voudrais définir TERM à une valeur différente sur ma machine, donc je pourrais simplement taper screen à la place.
Puis-je choisir l'utilisation de l'écran en mode couleur et le paramétrer quelque part? Le filtre

Répondre

1

screen filtre les séquences d'échappement qu'il ne supporte pas. Il ne prend pas en charge la séquence d'échappement xterm-style qui modifie les valeurs de couleur, mais utilise uniquement la palette de couleurs prédéfinie de votre terminal.

Si vous

infocmp screen-256color xterm-256color 

vous remarquerez probablement plusieurs différences. Celui traitant des valeurs de couleur changeantes est initc. (Le choix d'une couleur donnée dans la palette se fait avec setaf et setab). Le message d'avertissement est dû au fait que (apparemment) votre machine n'a pas de description de terminal pour xterm-256color installée, par exemple, si vous passez à la machine et qu'elle reçoit TERM de votre machine locale. screen veut savoir ce que TERM s'applique à en dehors de, pour l'aider à convertir à son à l'intérieur (TERM=screen). Une lecture rapide de la documentation et du code source montre que si modifie plusieurs fonctionnalités pour la conversion entre entrée/sortie TERM et pour choisir un TERM intérieur particulier, il n'y a pas de paramètre .screenrc pour surcharger la variable d'environnement TERM.

est ici un pointeur sur le 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); 

où il assure que TERM est réglé, et un pointeur vers (deux niveaux vers le bas) où 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 .. Si vous voulez juste lancer "screen", vous pouvez créer un alias de shell, ou un script simple qui définit TERM comme vous le faites maintenant.

+0

Merci pour votre réponse, mais je ne suis pas sûr que ma question était très claire et je l'ai éditée. Je voudrais être capable de faire 'screen' avec une palette prédéfinie de mon choix enregistrée quelque part. –