Şu şekilde çalıştırırsanız bash
:
LD_DEBUG=bindings bash
bir GNU sisteminde ve bash.*tinfo
bu çıktıda grep için , şöyle bir şey görürsünüz:
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'
Çıktısı gelen onaylayabilirsiniz nm -D /bin/bash
o bash
tinfo gelenler sembolleri kullanıyor.
Bu sembollerden herhangi biri için kılavuz sayfasını getirmek, ne için olduklarını netleştirir:
$ man tgetent
NAME
PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs -
direct curses interface to the terminfo capability database
Temel olarak, bash
daha büyük olasılıkla onun readline
o (sağ çıkış sıralarını gönderme ve doğru tuşa basma tespit) düzgün bir çizgi editörü çalışabilmesi için (libreadline statik içinde bağlantılıdır) editörü, herhangi terminali yetenekleri hakkında bilgi edinmek için terminfo veritabanını sorgulamak için bu kullanır terminal.
Readline'ın neden statik olarak bağlantılı bash
olduğuna gelince , aynı kişi tarafından readline
geliştirilen bash
ve kaynağına dahil olan unutmayın bash
.
bash
Sistemin kurulu olmasıyla bağlantı kurmak için inşa etmek mümkündür libreadline
, ancak bu sadece uyumlu bir versiyona sahipse ve bu varsayılan değilse. configure
Komut dosyasını derleme zamanında çağırmanız gerekir --with-installed-readline
.
TERM
? Ah, boş ver - Kaynak paketin olduğunu görüyorumncurses
.