次のように実行bashした場合:
LD_DEBUG=bindings bash
GNUシステムではbash.*tinfo、その出力にgrepが含まれていると、次のように表示されます。
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'
tinfoからのシンボルを使用しているnm -D /bin/bashことの出力から確認できますbash。
これらのシンボルのmanページを表示すると、その目的が明確になります。
$ man tgetent
NAME
PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs -
direct curses interface to the terminfo capability database
基本的にbash、そのreadline(libreadlineが静的にリンクされている)エディターは、それらを使用してterminfoデータベースにクエリを実行し、端末機能について調べて、ラインエディターを適切に実行できるようにします(適切なエスケープシーケンスを送信し、キープレスを正しく識別します)。ターミナル。
readlineがに静的にリンクされている理由については、同じ人物によって開発され、のソースに含まれてbashいることを覚えておく必要readlineがbashありbashます。
bashシステムにインストールされているとリンクするようにビルドすることは可能libreadlineですが、それが互換性のあるバージョンであり、それがデフォルトではない場合に限られます。configureコンパイル時にスクリプトをで呼び出す必要があります--with-installed-readline。
TERM?ああ、気にしないでください-ソースパッケージはncursesです。