Modifica degli emulatori di terminale


10

Ho accesso ssh a una macchina remota. In questa macchina se corro echo $TERMottengo xterm.

Se voglio cambiare il mio emulatore di terminale con un altro emulatore (supponendo che sia installato sul computer remoto), come lo farei?

Risposte:


15

Il valore della variabile d'ambiente TERM viene utilizzato dal server (nel sistema V, o BSD, sistemi operativi derivati) per controllare il modo in cui l'input viene riconosciuto dal sistema e quali funzionalità esistono per l'output. Alcuni tipi di terminali sono abbastanza simili da poter essere scambiati rimanendo comunque utili, mentre altri potrebbero rendere il sistema inutilizzabile fino a quando non si apre una nuova connessione con un valore supportato per TERM. Ad esempio, da un sistema Linux a un altro, probabilmente si verificheranno poche differenze tra le impostazioni di vt100, vt220 e xterm. La maggior parte delle differenze risiederebbe nella modalità di visualizzazione dell'output e nella disponibilità di colori o caratteri in grassetto per quel tipo di terminale. Il database termcap elenca tutti i tipi di terminali, con le loro varie capacità.

Fintanto che non si passa a un tipo di terminale con cui tastiera e schermo non sono compatibili, andrà tutto bene.

leggi la pagina man per term, e termcap, sul tuo sistema per maggiori informazioni.

Per modificare il tipo di terminale:

in bash:

export TERM=vt100

in bourne shell o ksh:

TERM=vt100
export TERM

in csh o tcsh:

setenv TERM vt100

vt100è un terminale abbastanza sicuro con cui iniziare a giocare. è compatibile con xterm, ma non mostra colori o caratteri in grassetto e potrebbe non riconoscere i tuoi tasti F *, ma è improbabile che rovini davvero nulla usando vt100.

Molte persone utilizzano il rilevamento dei terminali negli script di inizializzazione personale per ottimizzare la propria esperienza utente in base al modo in cui accedono al server. Ad esempio, imposta una semplice PS1 se stai usando vt100, usa il colore e le variabili dinamiche quando usi bash in un xterm.

Buona fortuna con la tua ricerca.


3
@intrpc Nota che è abbastanza raro dover cambiare la TERMvariabile; è per lo più necessario quando si accede a un sistema precedente che non conosce il nome di un nuovo terminale (e non ci sono stati molti nuovi tipi di terminali negli ultimi 15 anni circa, la maggior parte degli emulatori di terminali si definisce come xterm). TERMè ciò con cui i programmi di tipo terminale credono di parlare, non cambia ciò che è effettivamente il terminale.
Gilles 'SO- smetti di essere malvagio'

9

Stai fraintendendo.

La tua console o terminale o istanza PuTTY sul lato LOCALE è il vero "emulatore di terminale", anche se al giorno d'oggi accorciamo i "terminali". L'utilizzo deriva da quando le persone utilizzavano effettivamente i terminali monitor e tastiera per accedere a un server mainframe anziché utilizzare più console e ambienti utente grafici.

La variabile $ TERM dice semplicemente al sistema remoto che tipo di codici di controllo il tuo terminale capirà quando li invia (per esempio, per generare menu testuali o qualsiasi cosa basata su libncurses).

Non sono sicuro di cosa esattamente vuoi ottenere, ma cambiare $ TERM probabilmente non ti aiuterà.


Grazie @Shadur, questo è utile. Vorrei abilitare il supporto per più colori. Sto riscontrando problemi con i caratteri di escape, come spiego nell'aggiornamento di questa domanda . Nel caso in cui sia importante, entrambe le macchine / i sistemi sono moderni ( Ubuntu 11.10sulla mia macchina locale e Red Hat Enterprise Linux Server release 5.4 (Tikanga)sulla macchina remota)
Amelio Vazquez-Reina

Spiacenti, il link era alla domanda sbagliata. Ho appena modificato il mio commento sopra.
Amelio Vazquez-Reina,

Quindi il tuo problema non è ancora la variabile TERM, perché la mia finestra gnome-terminal, SSHed su un server remoto con un valore $ TERM di xterm non ha problemi a rendere i colori ansi. Potrebbe essere meglio se spieghi il tuo problema piuttosto che chiedere come implementare quella che pensi debba essere la soluzione.
Shadur,

Grazie, ma non ho detto che "il mio problema" era la $TERMvariabile. Inoltre, non sto ponendo questa domanda al solo scopo di trovare una soluzione a un diverso problema / domanda. Semmai, l'altra mia domanda ha motivato questa domanda. Infine, non penso che ci sia qualcosa di sbagliato nella speranza di saperne di più su come funzionano gli emulatori terminali ponendo questa domanda.
Amelio Vazquez-Reina,

A proposito, non fraintendetemi, apprezzo il vostro consiglio e, come ho detto prima, la vostra risposta mi ha aiutato a capire meglio gli emulatori terminali.
Amelio Vazquez-Reina,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.