Wenn Sie ausführen bash
als:
LD_DEBUG=bindings bash
Auf einem GNU-System sehen bash.*tinfo
Sie in dieser Ausgabe Folgendes:
797: binding file bash [0] to /lib/x86_64-linux-gnu/libtinfo.so.5 [0]: normal symbol `UP'
797: binding file bash [0] to /lib/x86_64-linux-gnu/libtinfo.so.5 [0]: normal symbol `PC'
797: binding file bash [0] to /lib/x86_64-linux-gnu/libtinfo.so.5 [0]: normal symbol `BC'
797: binding file bash [0] to /lib/x86_64-linux-gnu/libtinfo.so.5 [0]: normal symbol `tgetent'
797: binding file bash [0] to /lib/x86_64-linux-gnu/libtinfo.so.5 [0]: normal symbol `tgetstr'
797: binding file bash [0] to /lib/x86_64-linux-gnu/libtinfo.so.5 [0]: normal symbol `tgetflag'
Sie können anhand der Ausgabe bestätigen, nm -D /bin/bash
dass Sie bash
diese Symbole von tinfo verwenden.
Wenn Sie die Manpage für eines dieser Symbole aufrufen, wird klargestellt, wofür sie bestimmt sind:
$ man tgetent
NAME
PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs -
direct curses interface to the terminfo capability database
Im Grunde genommen bash
, eher seinen readline
Editor (libreadline statisch verknüpft ist), verwenden diejenigen , die die term Datenbank abzufragen über Terminal - Fähigkeiten , um herauszufinden , damit es seinen Zeileneditor richtig laufen kann (die richtigen Escape - Sequenzen zu senden und Tastendrücke korrekt identifizieren) auf jedem Terminal.
Wie, warum ist Readline- in statisch gelinkte bash
, müssen Sie bedenken , dass readline
neben entwickelt bash
von der gleichen Person und ist in der Quelle enthält bash
.
Es ist möglich, bash
eine Verknüpfung mit dem installierten System herzustellen libreadline
, jedoch nur, wenn dieses eine kompatible Version hat, und dies ist nicht die Standardeinstellung. Sie müssen das configure
Skript zur Kompilierungszeit mit aufrufen --with-installed-readline
.
TERM
? Ah, egal - ich sehe das Quellpaket istncurses
.