term(7)

NAZWA
term - zasady nazywania typów terminali

OPIS
Zmienna środowiskowa TERM powinna standardowo zawierać nazwę typu terminala, konsoli lub urządzenia wyświetlającego, który jest używany. Informacja ta jest niezbędna dla wszystkich programów wyświetlających wyniki na ekranie, włączając w to edytor czy program pocztowy.

Standardowa wartość zmiennej TERM będzie ustawiona poprzez inicjalizację linii poprzez plik /etc/inittab (Linux i podobne do Systemu V Uniksy) lub plik /etc/ttys (BSD UNIX). To prawie zawsze wystarczy dla stacji roboczych czy konsoli mikrokomputerów.

Jeśli używana jest linia telefoniczna, to typ urządzenia dołączonego do niej może być różny. Starsze systemy uniksowe ustawiają początkowo bardzo prosty typ terminala np. "dumb" lub "dialup". Nowsze mogą używać terminala "vt100", odzwierciedlając rozpowszechnienie terminali DEC-a VT100-kompatybilnych i emulatorów z komputerów osobistych.

Nowoczesne telnety przekazują zmienną środowiskową TERM z lokalnego systemu do odległego. Mogą wystąpić problemy jeżeli terminfo lub termcap na odległym systemie nie zawiera definicji terminala kompatybilnej z bieżącą, ale ta sytuacja jest rzadka i może być prawie zawsze uniknięta przez ustawienie typu terminala na "vt100" (zakładając, że rzeczywiście używana jest podobna do VT100 konsola, terminal, lub emulatora terminala).

W każdym razie, można dowolnie zmieniać zmienną TERM ustawioną przez system na dowolną wartość w profilu powłoki. Program tset(1) może być w tym pomocny; można mu podać zbiór reguł aby wydedukował lub zażądał podania typu terminala bazując na urządzeniu tty i prędkości przesyłu danych (baud rate).

Ustawienie zmiennej TERM własną wartością może być także użyteczne jeśli stworzono własną definicję terminala włączając opcje (takie jak widzialny dzwonek (czyli błyśnięcie ekranu lub podświetlenie) które mają zamienić standardowe ustawienia systemu.

Opisy typów terminali są przechowywane jako pliki zawierające dane opisujące ich możliwości w katalogu /usr/share/terminfo. Aby przejrzeć listę wszystkich nazw terminali rozpoznawanych przez system, proszę wykonać

        toe | more

z poziomu powłoki. Pliki te, opisujące możliwości terminali są przechowywane w formacie binarnym aby zapewnić optymalną prędkość dostępu do nich (odwrotnie niż w przypadku starego bazującego na tekście pliku termcap, który zastępują); aby sprawdzić jedną z pozycji należy użyć polecenia infocmp(1M). Wywołać można go następująco:

        infocmp nazwa

gdzie nazwa jest nazwą typu terminala, który ma być sprawdzony (i zarazem nazwą pliku w podkatalogu /usr/share/terminfo nazwanym od pierwszej litery typu terminala). Komenda ta wyświetla plik z opisem terminala w formacie tekstowym opisanym przez terminfo(5).

Pierwsza linia terminfo(5) opisuje nazwy, pod którymi terminfo rozpoznaje terminal, nazwy przedzielone są znakami "|", a ostatnia zakończona jest przecinkiem. Pierwsza nazwa jest podstawową nazwą terminala (primary name), i powinna być używana przy ustawianiu zmiennej TERM. Ostatnia nazwa jest w rzeczywistości opisem typu terminala (może zawierać spacje; inne muszą być pojedynczymi słowami). Nazwy pomiędzy pierwszą, a ostatnią (o ile istnieją) są aliasami nazwy terminala i zazwyczaj przechowywane są tam dawne nazwy terminala dla kompatybilności.

Istnieją pewne konwencje jak dobierać podstawowe nazwy terminala, które pozwalają aby były unikalne, a zarazem niosły w sobie pewną informację. Poniżej zamieszczony jest przewodnik, który krok po kroku wyjaśnia jak nazywać a także jak je rozumieć:

Najpierw proszę wybrać główną nazwę. Powinna się ona składać z małej litery i następujących po niej do siedmiu małych liter bądź cyfr. Powinno się unikać używania znaków przestankowych w głównych nazwach, ponieważ są one używane i interpretowane jako nazwy plików i meta-znaków powłoki (np. takie jak !, $, *, ? itp.), umieszczone w nich mogą spowodować dziwne i kłopotliwe zachowanie. Ukośnik (/), czy jakikolwiek inny znak, który może zostać zinterpretowany przez czyjś system plików (\, $, [, ]), jest szczególnie niebezpieczny (terminfo jest niezależne od platformy, więc wybór nazwy zawierającej znaki specjalne może któregoś dnia spowodować pewne problemy dla przyszłych użytkowników). Znak kropki (.) jest względnie bezpieczny o ile występuje co najwyżej jedna w nazwie głównej; niektóre starsze nazwy terminfo wykorzystują ją.

Nazwa główna terminala lub typu konsoli stacji roboczej powinna prawie zawsze zaczynać się od przedrostka sprzedawcy (np. hp dla Hewlett-Packard, wy dla Wyse, czy att dla terminali AT&T), lub popularną nazwą linii terminala (vt dla terminali typu VT od DEC-a, czy sun dla konsoli stacji roboczych Suna lub regent dla modeli ADDS Regent). Można wypisać drzewo terminfo aby zobaczyć jakie przedrostki są już w powszechnym użyciu. Po nazwie głównej powinien znajdować się, jeśli to potrzebne, numer modelu; a więc vt100, hp2621, wy50.

Nazwą główną dla konsoli typu PC-Unix powinna być nazwa systemu operacyjnego np. linux, bsdos, freebsd, netbsd. Nie powinna to być nazwa typu console czy jakakolwiek inna ogólna nazwa która może spowodować zamieszanie w środowisku o wielu platformach. Jeśli później następuje numer modelu, powinien wskazywać albo numer wersji systemu operacyjnego lub numer wersji sterownika konsoli.

Nazwą główna dla emulatora terminala (zakładając że nie pasuje do któregoś ze standardu ANSI lub typu vt100) powinna być nazwa programu lub z łatwością rozpoznawalny skrót (np. versaterm, ctrm).

Po nazwie głównej, można dodać dowolną, lecz rozsądną, ilość rozdzielonych łącznikiem przyrostków określających specjalne właściwości.

2p  Ma dwie strony pamięci. Podobnie 4p, 8p, itd.

mc  Magic-cookie. Niektóre terminale (szczególnie starsze Wyse) mogą obsługiwać jedynie jeden atrybut bez utraty magic-cookie. Ich definicja w terminfo zazwyczaj jest sparowana z inną (która posiada ten przyrostek) aby wspierać dużą ilość atrybutów.

-am Włącza auto-margines (prawostronne zawijanie)

-m  Tryb mono - wyłączenie obsługi kolorów

-na Bez strzałek - termcap ignoruje strzałki które w rzeczywistości są na terminalu, więc użytkownik może używać ich lokalnie.

-nam
    Bez auto-marginesu - Wyłącza opcję am

-nl Bez etykiet - wyłącza miękkie etykiety

-nsl
    Bez linii statusu - likwiduje linię statusu

-pp Ma port drukarki który jest używany

-rv Terminal w odwróconym trybie video (czarny na białym)

-s  Używa linii statusu.

-vb Używa widzialnego dzwonka (błysk) a nie krótkiego dźwięku.

-w  Szeroki; terminal jest w trybie 132 kolumnowym.

Standardowo, jeśli typ używanego terminala jest jednym z wariantów, który ma za zadanie określić liczbę linii, przyrostek powinien znaleźć się tam pierwszy. Dla hipotetycznego terminala FuBarCo model 2317 w 30-liniowym trybie z odwrotnym wyświetlaniem (reverse video), lepszą nazwą byłaby fubar-30-rv (niż np. "fubar-rv-30").

Typy terminali, które nie są opisane jako samodzielne sekcje, a raczej jako składniki do dołączenia do innych sekcji poprzez use, są rozróżniane poprzez użycie znaków plus (+) a nie minus (-).

Komendy, które używają typu terminala aby kontrolować wyświetlanie często akceptują opcję -T, która pozwala podać typ terminala jako argument. Takie programy powinny skorzystać ze zmiennej środowiskowej TERM kiedy opcja -T jest nie podana.

PLIKI

/usr/share/terminfo
    skompilowana baza danych o terminalach

/etc/inittab
    inicjalizacja linii tty (uniksy podobne do AT&T)

/etc/ttys
    inicjalizacja wiesza tty (uniksy podobne do BSD).

PRZENOŚNOŚĆ
Dla maksymalnej kompatybilności ze starszymi uniksami System V, nazwy i aliasy powinny być unikalne w pierwszych 14 znakach.

ZOBACZ TAKŻE
curses(3X), term(5), terminfo(5)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Marcin Mazurek <mazek@capella.ae.poznan.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.