Se corri bashcome:
LD_DEBUG=bindings bash
su un sistema GNU, e grep per bash.*tinfoin quell'output, vedrai qualcosa come:
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'
È possibile confermare dall'output nm -D /bin/bashche bashsta utilizzando quei simboli da tinfo.
Portare la pagina man per uno di quei simboli chiarisce a cosa servono:
$ man tgetent
NAME
PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs -
direct curses interface to the terminfo capability database
Fondamentalmente, bashpiù probabilmente il suo readlineeditor (libreadline è staticamente collegato), usa quelli per interrogare il database terminfo per scoprire le funzionalità del terminale in modo che possa eseguire correttamente il suo editor di linee (inviando le giuste sequenze di escape e identificare correttamente i tasti premuti) su qualsiasi terminale.
Per quanto riguarda perché readline è staticamente collegato bash, devi tenere presente che readlineè sviluppato insieme bashalla stessa persona ed è incluso nella fonte di bash.
È possibile costruire bashper essere collegato con il sistema installato libreadline, ma solo se quello è di una versione compatibile e non è l'impostazione predefinita. Devi chiamare lo configurescript al momento della compilazione con --with-installed-readline.
TERM? Ah, non importa - vedo che il pacchetto sorgente èncurses.