Jika Anda menjalankan bashsebagai:
LD_DEBUG=bindings bash
pada sistem GNU, dan menerima bash.*tinfodalam output itu, Anda akan melihat sesuatu seperti:
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'
Anda dapat mengkonfirmasi dari output nm -D /bin/bashyang bashmenggunakan simbol-simbol dari tinfo.
Membawa halaman manual untuk simbol-simbol itu menjelaskan untuk apa simbol-simbol itu:
$ man tgetent
NAME
PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs -
direct curses interface to the terminfo capability database
Pada dasarnya,, bashlebih mungkin readlineeditornya (libreadline terhubung secara statis), menggunakan editor tersebut untuk meminta basis data terminfo untuk mencari tahu tentang kapabilitas terminal sehingga dapat menjalankan editor lini dengan benar (mengirimkan urutan jalan keluar yang tepat dan mengidentifikasi penekanan tombol dengan benar) pada sembarang terminal.
Mengenai mengapa readline terhubung secara statis ke dalam bash, Anda harus mengingat bahwa readlineyang dikembangkan bersama basholeh orang yang sama dan termasuk dalam sumber bash.
Dimungkinkan untuk membangun bashuntuk dihubungkan dengan sistem yang diinstal libreadline, tetapi hanya jika yang itu adalah versi yang kompatibel, dan itu bukan default. Anda harus memanggil configureskrip pada saat kompilasi --with-installed-readline.
TERM? Ah, sudahlah - Saya melihat paket sumbernyancurses.