bash
является приложением termcap через readline
, как screen
и некоторые другие программы. В большинстве систем на основе Linux (кроме Slackware) вы, вероятно, увидите ncurses как базовую реализацию termcap .
Страница руководства дляtgetent
(названная curs_termcap, потому что так было сделано в SVr4 ...) гласит:
Эти подпрограммы включены в качестве помощи для преобразования программ, которые используют библиотеку termcap . Их параметры одинаковы, и процедуры эмулируются с использованием
базы данных terminfo . Таким образом, они могут использоваться только для запроса возможностей записей, для которых была скомпилирована запись terminfo .
То есть, если вызывающая программа не смотрит внимательно на возвращаемые данные и использует обычный интерфейс termcap для чтения описания терминала и записи данных на экран, она работает так же, как и исходный termcap.
Большинство приложений termcap не выглядят так пристально (xterm - редкое исключение - см. FAQ ). Так bash
работает с курсами.
Однако библиотека termcap меньше, чем ncurses. Некоторое время назад это имело значение, и с 1997 года ncurses имеет опцию конфигурации, --with-termlib
которая позволяет создавать части, специфичные для termcap и terminfo, в виде библиотеки, отдельной от функций, необходимых в библиотеке curses более высокого уровня. Прошло несколько лет, и некоторые дистрибутивы на основе Linux включили это в свои пакеты.
Поскольку bash
не использует ни одну из функций curses (libncurses и т. Д.), Разумно ссылаться только на libtinfo
.
readline
является специфичной для termcap частью bash
(фактически, когда я впервые столкнулся bash
, его части termcap были жестко закодированы , хотя официальный источник использовал termcap - возможно, чтобы сохранить еще несколько байтов). При bash
сборке из комплекта readline
вы не увидите readline
отдельную библиотеку, потому что не было бы смысла делать эту комплектную readline
установку в качестве (возможно, конфликтующей) разделяемой библиотеки. Но (в зависимости от вашей системы) вы можете видеть, libtinfo
потому что ncurses создается так или иначе (разделены или нет), а не оба.
TERM
? Ах, не берите в голову - я вижу исходный пакетncurses
.