ПРИЛОЖЕНИЕ D УСТАНОВКА ХАРАКТЕРИСТИК ТЕРМИНАЛА ПРИЛОЖЕНИЕ D: УСТАНОВКА ХАРАКТЕРИСТИК ТЕРМИНАЛА УСТАНОВКА ПЕРЕМЕННОЙ TERM ОС UNIX поддерживает многие типы терминалов. Поскольку некото- рые команды зависят от терминала, система должна знать, с каким типом терминала работает пользователь при его входе в систему. Операционная система определяет характеристики терминала поль- зователя, проверяя значение переменной с именем TERM, которая содержит имя терминала. Если пользователь поместил имя своего терминала в эту переменную, система сможет выполнять все прог- раммы, в соответствии с особенностями его терминала. Такой способ указания системе UNIX типа терминала, с которым работает пользователь, называется установкой конфигурации тер- минала. Чтобы установить конфигурацию терминала, пользователю следует ввести показанные ниже командные строки, подставляя имя своего терминала в качестве значения для имя_терминала. |$ TERM=имя_терминала |$ export TERM |$ tput init Эти командные строки должны выполняться в указанном порядке, в противном случае эти действия не приведут к успеху. К тому же, эта процедура должна повторяться при каждом входе пользователя в систему, поэтому большинство пользователей включает указанные командные строки в файл с именем .profile, который выполняется автоматически при каждом входе в систему. Более подробные све дения о файле .profile см. в гл. 5. Первые две из показанных выше строк определяют для системы UNIX тип используемого пользователем терминала. Командная строка tput init предписывает терминалу функционировать так, как ожи- дает этого от терминала система UNIX. Например, она устанавли вает положение левой границы и табуляцию, если эти возможности существуют у терминала. Команда tput использует переменную TERM в этой базе данных для того, чтобы сделать доступными для интерпретатора shell завися- щие от терминала характеристики и дополнительную информацию. Поскольку эти характеристики различаются для каждого типа тер- минала, пользователь должен выполнять командную строку tput init при каждом изменении переменной TERM. Для каждого типа терминала совокупость характеристик определя- ется в базе данных, которая в зависимости от системы обычно создается либо в каталоге /usr/lib/terminfo, либо в каталоге /usr/lib/.COREterm. Примечание Любая система содержит один из этих каталогов, иногда - оба. Администратор системы может сообщить пользователю о том, содержит ли система, в которой он работает, ка- талог terminfo и/или каталог .COREterm. Далее описывается, как пользователь может определить допустимые имена_терминалов. Более подробные сведения о базе данных ter minfo можно найти в разд. terminfo(4) Справочника пользователя. ДОПУСТИМЫЕ ИМЕНА ТЕРМИНАЛОВ Система UNIX распознает широкий диапазон типов терминалов. Пе- ред тем, как записывать имя терминала в переменную TERM, поль- зователь должен убедиться, что его терминал находится среди множества распознаваемых типов терминалов. Кроме того, пользователь должен проверить, что имя, которое он записывает в переменную TERM, является распознаваемым типом терминала. Обычно существует по крайней мере два распознаваемых имени: имя изготовителя и номер модели. Однако, имеется нес колько способов представления этих имен: использование как про- писных, так и строчных букв, применение аббревиатур и т.д. Н следует присваивать имя терминала переменной TERM, не проверив, распознает ли его система. Команда tput дает возможность быстро убедиться, что терминал пользователя поддерживается его системой. Для этого следует ввести: |tput -Tимя_терминала longname Если система поддерживает терминал пользователя, она ответит выводом полного имени этого терминала. В противном случае выво- дится сообщение об ошибке. Чтобы определить доступное имя, которое можно присвоить пер менной TERM, следует найти список для терминала в одном из двух каталогов: /usr/lib/terminfo или /usr/lib/.COREterm. Каждый из этих каталогов представляет собой совокупность файлов с одно- символьными именами. Каждый файл содержит список имен термина- лов, которые начинаются с имени файла. (Это имя может быть либо буквой, как например начальное A в имени AТ&Т, либо цифрой, как начальнае 5 в числе 5425.) Пользователю необходимо найти файл, имя которого соответствует первому символу имени его терминала. Затем вывести список, содержащийся в файле, и отыскать имя св го терминала. Пользователь может, также, проверить с администратором системы список терминалов, поддерживаемых системой, и установить допус- тимые имена, которые он может присваивать переменной TERM. ПРИМЕР Предположим, что терминалом пользователя служит телетайп AT&T модель 5425. Пользователь имеет входное имя jim и находится в своем основном каталоге. В первую очередь, он убеждается в том, что система поддерживает данный терминал, выполняя команду tput. Затем, он находит подходящее имя терминала в каталоге /usr/lib/.COREterm/A. Ниже показаны команды, которые пользова- телю необходимо выполнить: |$ tput -T5425 longname |AT&T 4425/5425 |$ cd /usr/lib/.COREterm/A |$ ls |ATT4410 |ATT4415 |ATT4418 |ATT4424 |ATT4424-2 |ATT4425 |ATT4426 |ATT513 |ATT5410 |ATT5418 |ATT5420 |ATT5420-2 |ATT5425 |ATT5620 |ATT610BCT |ATTPT505 |$ Теперь пользователь готов записать найденное имя (ATT5425) в переменную TERM. Сделав это, он должен дополнительно экспорти- ровать переменную системе и выполнить команду tput init. |$ TERM=ATT5425 |$ export TERM |$ tput init |$ Теперь система UNIX знает, с каким типом терминала работает пользователь и будет выполнять команды, соответствующим обра- зом.