Взаимодействие curses и terminfo
Подпрограммы пакета curses извлекают из базы данных terminfo
информацию о том типе терминала, на котором программа выполняется. В дальнейшем этот терминал мы будем называть текущим терминалом.
Предположим, что программа, текст которой приведен в конце раздела Что такое curses?, выполняется на терминале AT&T Teletype 5425. Чтобы отработать должным образом, то есть вывести BullsEye в центр экрана, программа должна иметь информацию о количестве строк и столбцов на экране. Эти данные хранятся в описании терминала AT&T Teletype 5425 в базе данных terminfo. Чтобы получить их, программе, работающей с curses, достаточно знать только название терминала, на котором она выполняется. Можно передать ей это название, поместив его в переменную окружения $TERM при подключении к системе UNIX, или путем присвоения значения и помещения в окружение переменной $TERM в Вашем файле .profile [см. profile(4)]. Располагая значением $TERM, программа, использующая curses, может извлечь описание текущего терминала из базы данных terminfo.
Пусть, например, в .profile включены следующие строки:
TERM=5425 export TERM tput init
В первой строке устанавливается название терминала, а во второй оно помещается в окружение. Третья строка примера требует от системы UNIX проинициализировать текущий терминал, то есть обеспечить соответствие состояния терминала его описанию в базе данных terminfo. (Порядок этих строк важен. Чтобы при вызове tput произошла правильная инициализация текущего терминала, $TERM должна быть уже установлена и помещена в окружение). Если, имея такие строки в файле .profile, Вы запустите программу, работающую с curses, она получит нужную ей информацию о терминале из файла, соответствующего значению $TERM, то есть из файла /usr/lib/terminfo/a/att5425.