È corretto impostare manualmente la variabile $ TERM?


10

Ho impostato la $TERMvariabile aggiungendo la linea XTerm*termName: xterm-256coloral mio .Xresourcesfile. Quando l'ho fatto non sapevo cosa significasse esattamente (stavo seguendo una guida online per cambiare l'aspetto xterm), ma ora ho letto un po 'di più e sono preoccupato se ciò che ho fatto è stato sbagliato. In particolare, voglio sapere che c'è qualcosa di brutto nell'impostazione $TERMmanuale della variabile e, in caso affermativo, come posso ripristinare il mio errore.

Nel caso ne avessi bisogno, eseguo Fedora 20 con xterm.


Questa è una domanda di programmazione generica. Dipende da cosa farai. Se puoi dare per scontato un ambiente desktop e l'assenza di connessioni remote, potrebbe essere OK. In caso contrario, tutti i possibili casi devono essere elaborati con controllo degli errori.
41754,

@uprego Potresti approfondire "l'assenza di connessioni remote"?
Santaru72,

È possibile che si stia utilizzando una sessione tmux permanente con l'opzione 256 colori, ma se lo si collega da una sessione ssh, i possibili scenari si allargano troppo per essere elencati. Ogni applicazione avrebbe o meno effetti desiderabili a seconda dell'abilità di ciascun programmatore. Come sottolinea @goldilocks nella sua risposta non dovrebbe essere pericoloso, ma c'è la differenza tra "non dovrebbe essere" e "non può essere".
41754,

@uprego: realisticamente, avrei dovuto dire "impossibile", a meno che tu non consideri l'output illeggibile "pericoloso".
Riccioli d'oro

Risposte:


7

Per la maggior parte, non è necessario impostare TERMmanualmente. La variabile viene sempre impostata automaticamente e vi è solo una serie ristretta di circostanze in cui il valore predefinito non è corretto.

È TERMnecessario fare riferimento al valore di nel database terminfo del sistema (o per alcuni sistemi vecchio stile, nel database termcap ). Terminfo e Termcap associano i tipi di terminale alla descrizione delle funzionalità del terminale utilizzate dalle applicazioni. Il valore di TERMè il tipo di terminale.

Il motivo principale per cui a volte potresti dover cambiare TERMè se accedi in remoto, quando il computer locale e il computer remoto hanno database terminali diversi.

Un altro motivo, correlato al precedente, è che a volte ci sono più voci simili per un terminale, con capacità leggermente diverse. Questo tende ad accadere principalmente quando viene fuori un nuovo terminale che è compatibile con un terminale esistente, ma ha più funzionalità. È quindi possibile scegliere se utilizzare il nome tradizionale, che tutte le macchine comprendono, ma che pubblicizza solo le funzionalità tradizionali, o il nome più recente, che pubblicizza tutte le nuove funzionalità ma che alcune macchine non capiranno.

Un esempio di questo è xterm con 16 colori vs xterm con 256 colori. Un xterm tradizionale supporta solo 16 colori, quindi è ciò che xtermspecifica il database del terminale. La modifica della xtermvoce renderebbe felici gli utenti delle versioni xterm più recenti, ma interromperebbe la configurazione degli utenti delle versioni xterm precedenti che accedono in remoto. Passare a un nuovo nome -  xterm-256color: fornisce le nuove funzionalità ogni volta che sono disponibili, ma non viene riconosciuto se si accede in remoto a macchine con un database di terminali meno recente. Poiché non esiste una soluzione in grado di soddisfare tutti, puoi scegliere: attenersi xterme non ottenere i 256 colori o utilizzare xterm-256colorciò che non funziona se si accede a macchine remote che non lo supportano.

Lasciare il valore predefinito xterme impostare la termNamerisorsa su xterm-256color(che fa sì che la variabile di ambiente TERMvenga impostata sullo stesso valore) sono quindi entrambe scelte sensate. L'impostazione TERMsu valori arbitrari non funzionerebbe, ma entrambi xterme avrebbero xterm-256colorsenso.


3

Ho impostato la variabile $ TERM aggiungendo la riga XTerm * termName: xterm-256color al mio file .Xresources.

Va bene, purché tu sia consapevole di ciò che hai fatto; la maggior parte dei terminali della GUI lo supporta.

Puoi anche impostarlo dalla riga di comando o in uno script

export TERM=xterm-256color

Questo vale solo per quel terminale o per i figli successivi.

Un predefinito portatile sarebbe giusto xterm, il che significa supporto per 16 colori. Se hai un set di 256 colori e il tuo terminale non lo supporta, l'esecuzione di app TUI a 256 colori sembrerà semplicemente strana; probabilmente noterai subito. Ma non dovrebbe essere pericoloso.


Quindi l'impostazione al XTerm*termName: xtermposto di XTerm*termName: xterm-256colorme dovrebbe andare bene, giusto?
Santaru72,

Se è quello che vuoi, non impostare nulla; xtermè il valore predefinito per xterm;) ma significa 16 colori. Il punto principale dell'utilizzo xterm-256colorè dire alle applicazioni che il terminale supporta 256 colori . Se non lo fai, presumeranno 16 colori.
Riccioli d'oro
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.