Jika Anda menjalankan bash
sebagai:
LD_DEBUG=bindings bash
pada sistem GNU, dan menerima bash.*tinfo
dalam 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/bash
yang bash
menggunakan 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,, bash
lebih mungkin readline
editornya (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 readline
yang dikembangkan bersama bash
oleh orang yang sama dan termasuk dalam sumber bash
.
Dimungkinkan untuk membangun bash
untuk dihubungkan dengan sistem yang diinstal libreadline
, tetapi hanya jika yang itu adalah versi yang kompatibel, dan itu bukan default. Anda harus memanggil configure
skrip pada saat kompilasi --with-installed-readline
.
TERM
? Ah, sudahlah - Saya melihat paket sumbernyancurses
.