Czy poprawne jest ręczne ustawienie zmiennej $ TERM?


10

Ustawiam $TERMzmienną dodając wiersz XTerm*termName: xterm-256colordo mojego .Xresourcespliku. Kiedy to zrobiłem, nie wiedziałem, co to właściwie znaczy (korzystałem z internetowego przewodnika, aby zmienić wygląd xterm), ale teraz przeczytałem trochę więcej i martwię się, czy to, co zrobiłem, było złe. W szczególności chcę wiedzieć, że jest coś złego w ustawianiu $TERMzmiennej ręcznie, a jeśli tak, to w jaki sposób mogę przywrócić mój błąd.

W razie potrzeby korzystam z Fedory 20 xterm.


To jest ogólne pytanie dotyczące programowania. Zależy od tego, co będziesz robić. Jeśli możesz uznać za środowisko pulpitu i brak połączeń zdalnych, może być OK. Jeśli nie, wszystkie możliwe przypadki muszą zostać rozpatrzone z kontrolą błędów.
41754

@uprego Czy mógłbyś rozwinąć temat „absurdu zdalnych połączeń”?
Santaru72

Być może używasz stałej sesji tmux z opcją 256 kolorów, ale jeśli dołączysz ją z sesji ssh, możliwe scenariusze zbytnio się rozszerzają, aby je wymienić. Każda aplikacja miałaby lub nie pożądane efekty w zależności od umiejętności każdego programisty. Jak podkreśla @goldilocks w swojej odpowiedzi, nie powinno to być niebezpieczne, ale istnieje różnica między „nie powinno być” a „nie może być”.
41754

@uprego: Realistycznie powinienem powiedzieć „nie mogę”, chyba że nieczytelne dane wyjściowe uznawane są za „niebezpieczne”.
goldilocks

Odpowiedzi:


7

W większości przypadków nie należy ustawiać TERMręcznie. Zmienna jest zawsze ustawiana automatycznie i istnieje tylko wąski zestaw okoliczności, w których wartość domyślna jest niepoprawna.

Do wartości TERMnależy odwoływać się w bazie danych terminfo systemu (lub w przypadku kilku starych systemów, w bazie danych termcap ). Terminfo i Termcap mapują typy terminali do opisu możliwości terminali używanych przez aplikacje. Wartością TERMjest typ terminala.

Głównym powodem, dla którego czasem może być konieczna zmiana, TERMjest zalogowanie się zdalnie, gdy komputer lokalny i komputer zdalny mają różne bazy danych terminali.

Innym powodem, który jest związany z poprzednim, jest to, że czasami istnieje wiele podobnych wpisów dla terminala, z nieco innymi możliwościami. Zwykle dzieje się tak, gdy pojawia się nowy terminal, który jest kompatybilny z istniejącym terminalem, ale ma więcej funkcji. Następnie wybierasz między użyciem tradycyjnej nazwy, którą wszystkie maszyny rozumieją, ale która reklamuje tylko tradycyjne funkcje, lub nowszej nazwy, która reklamuje wszystkie nowe funkcje, ale których niektóre maszyny nie zrozumieją.

Przykładem tego jest xterm z 16 kolorami vs xterm z 256 kolorami. Tradycyjny xterm obsługuje tylko 16 kolorów, więc tak xtermokreśla baza danych terminali. Zmiana xtermwpisu sprawi, że użytkownicy nowszych wersji Xterm będą zadowoleni, ale zepsuje konfigurację użytkowników starszych wersji Xterm, którzy logują się zdalnie. Przełączenie na nową nazwę -  xterm-256color- zapewnia nowe możliwości, gdy tylko są dostępne, ale nie jest rozpoznawane, jeśli logujesz się zdalnie na komputerach ze starszą bazą danych terminali. Ponieważ nie ma rozwiązania, które mogłoby zadowolić wszystkich, masz wybór: albo pozostań przy xterm256 kolorach i nie używaj xterm-256colorgo, jeśli nie zalogujesz się na zdalnych komputerach, które go nie obsługują.

Pozostawienie domyślnej wartości xtermi ustawienie termNamezasobu na xterm-256color(co powoduje, że zmienna środowiskowa TERMzostanie ustawiona na tę samą wartość) są zatem rozsądnymi wyborami. Ustawienie TERMdowolnych wartości nie zadziałałoby, ale oba xtermi xterm-256colormają sens.


3

Ustawiam zmienną $ TERM, dodając do mojego pliku .Xresources wiersz XTerm * termName: xterm-256color.

W porządku, o ile jesteś świadomy tego, co zrobiłeś; większość terminali GUI obsługuje to.

Możesz także ustawić go z wiersza poleceń lub w skrypcie

export TERM=xterm-256color

Dotyczy to tylko tego terminala lub kolejnych dzieci.

Przenośne ustawienie domyślne byłoby sprawiedliwe xterm, co oznacza obsługę 16 kolorów. Jeśli masz zestaw 256 kolorów, a twój terminal go nie obsługuje, uruchamianie aplikacji 256 kolorów TUI będzie po prostu wyglądać dziwnie; prawdopodobnie zauważysz od razu. Ale to nie powinno być niebezpieczne.


Więc ustawienie XTerm*termName: xtermzamiast XTerm*termName: xterm-256colormnie powinno być w porządku, prawda?
Santaru72

Jeśli tego właśnie chcesz, nie ustawiaj niczego; xtermjest wartością domyślną dla xterm;), ale oznacza 16 kolorów. Głównym celem użycia xterm-256colorjest poinformowanie aplikacji, że terminal obsługuje 256 kolorów . Jeśli tego nie zrobisz, przyjmą 16 kolorów.
goldilocks
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.