Wymiana emulatorów terminali

10

Mam dostęp ssh do zdalnego komputera. W tej maszynie, jeśli uruchomię echo $TERM, dostaję xterm.

Jeśli chcę zmienić emulator terminala na inny emulator (zakładając, że jest on zainstalowany na zdalnym komputerze), jak mam to zrobić?

Amelio Vazquez-Reina
źródło

Odpowiedzi:

15

Wartość zmiennej środowiskowej TERM jest wykorzystywana przez serwer (w systemie V lub BSD, systemy pochodne) do kontrolowania sposobu rozpoznawania danych wejściowych przez system i możliwości dostępnych danych wyjściowych. Niektóre typy terminali są na tyle podobne, że można je zamieniać, pozostając nadal użyteczne, podczas gdy inne mogą sprawić, że system będzie bezużyteczny, dopóki nie otworzysz nowego połączenia z obsługiwaną wartością dla TERM. Na przykład, z jednego systemu Linux na inny, prawdopodobnie nie zauważysz bardzo różnicy między ustawieniami vt100, vt220 i xterm. Większość różnic dotyczy sposobu wyświetlania danych wyjściowych oraz dostępności kolorów lub pogrubionych czcionek dla tego typu terminala. Baza danych termcap zawiera listę wszystkich typów terminali wraz z ich różnymi możliwościami.

Dopóki nie przełączysz się na typ terminala, z którym klawiatura i ekran nie są kompatybilne, nic ci nie będzie.

przeczytaj stronę podręcznika dla terminu i termcap w swoim systemie, aby uzyskać więcej informacji.

Aby zmienić typ terminala:

w bash:

export TERM=vt100

w powłoce Bourne'a lub ksh:

TERM=vt100
export TERM

w csh lub tcsh:

setenv TERM vt100

vt100to całkiem bezpieczny terminal, z którym można zacząć grać. jest kompatybilny z Xterm, ale nie wyświetla kolorów ani pogrubionych czcionek i może nie rozpoznawać klawiszy F *, ale jest mało prawdopodobne, aby naprawdę coś zepsuło za pomocą vt100.

Wiele osób korzysta z wykrywania terminali w osobistych skryptach inicjujących, aby zoptymalizować wrażenia użytkownika w zależności od sposobu logowania się na serwerze. Na przykład ustaw zwykły PS1, jeśli używasz vt100, użyj kolorów i zmiennych dynamicznych, gdy używasz bash w xterm.

Powodzenia w twoich badaniach.

Tim Kennedy
źródło
3
@intrpc Zauważ, że dość rzadko trzeba zmieniać TERMzmienną; jest to przede wszystkim konieczne, gdy logujesz się do starszego systemu, który nie zna nazwy nowszego terminala (i nie było wielu nowych typów terminali w ciągu ostatnich 15 lat, większość emulatorów terminali stylizuje się jako xterm). TERMjest tym, z czym programy typu terminal uważają, że rozmawiają, nie zmienia to, czym tak naprawdę jest terminal.
Gilles „SO- przestań być zły”
9

Nie rozumiesz.

Twoja konsola, terminal lub instancja PuTTY po stronie LOKALNEJ jest rzeczywistym „emulatorem terminala”, mimo że w dzisiejszych czasach po prostu skracamy do „terminali”. Wykorzystanie wynika z przeszłości, gdy ludzie faktycznie używali terminali monitorujących i klawiaturowych do logowania się na serwerze mainframe, zamiast korzystać z wielu konsol i graficznych środowisk użytkownika.

Zmienna $ TERM po prostu informuje zdalny system, jakie kody sterujące zrozumie twój terminal, gdy je wyśle ​​(na przykład, aby wygenerować menu tekstowe lub cokolwiek opartego na libncurses).

Nie jestem pewien, co dokładnie chcesz osiągnąć, ale zmiana $ TERM prawdopodobnie nie pomoże.

Shadur
źródło
Dzięki @Shadur, to jest pomocne. Chciałbym włączyć obsługę większej liczby kolorów. Mam problem z ucieczką postaci, jak wyjaśniam w aktualizacji tego pytania . W przypadku, gdy jest to ważne, obie maszyny / systemy są nowoczesne ( Ubuntu 11.10na moim komputerze lokalnym i Red Hat Enterprise Linux Server release 5.4 (Tikanga)na komputerze zdalnym)
Amelio Vazquez-Reina
Przepraszamy, ten link był do niewłaściwego pytania. Właśnie edytowałem swój komentarz powyżej.
Amelio Vazquez-Reina,
Zatem twoim problemem nadal nie jest zmienna TERM, ponieważ moje okno terminalu gnome, SSHed do zdalnego serwera z wartością $ TERM xterm nie ma problemów z renderowaniem kolorów ansi. Może być lepiej, jeśli wyjaśnisz swój problem, niż zapytasz, jak wdrożyć rozwiązanie, które Twoim zdaniem powinno być rozwiązaniem.
Shadur
Dzięki, ale nie powiedziałem, że „mój problem” to $TERMzmienna. Ponadto nie zadaję tego pytania wyłącznie w celu znalezienia rozwiązania innego problemu / pytania. Jeśli już, moje inne pytanie uzasadniało to pytanie. Wreszcie, nie sądzę, że jest coś złego w nadziei, że dowiesz się więcej o tym, jak działają emulatory terminali, zadając to pytanie.
Amelio Vazquez-Reina,
Nawiasem mówiąc, nie zrozum mnie źle, doceniam twoją radę i, jak powiedziałem wcześniej, twoja odpowiedź pomogła mi lepiej zrozumieć emulatory terminali.
Amelio Vazquez-Reina,