Saya bertanya-tanya bagaimana beberapa sihir terminal bekerja secara internal.
Saat bermain-main dengan wadah buruh pelabuhan, variabel lingkungan $TERM
tidak diatur. Hal ini menyebabkan aplikasi konsol yang tampak aneh seperti vim dan tmux, tetapi juga CTRL+l (clear screen) diabaikan.
Saya cukup yakin bahwa semua fitur seperti pembaruan sebagian layar, warna, perintah seperti pengaturan ulang layar, dll. diwujudkan dengan menggunakan kode escape, bukan?
Jadi di mana variabel ini ditafsirkan dan memungkinkan misalnya mengatur ulang layar terminal saya menggunakan CTRL+l jika saya menetapkan nilai yang benar di sana? Siapa yang memeriksa misalnya warna mana yang didukung (xterm vs xterm-256color)? Kerang? Aplikasi atau perpustakaan seperti ncurses? Dan di mana kemungkinan nilai / tipe terminal didefinisikan?
Jawaban yang Diterima:
$TERM
dibaca dan ditafsirkan oleh sistem terminfo. terminfo juga merujuk ke database deskripsi terminal yang dapat Anda temukan di sebagian besar sistem di /usr/share/terminfo
. $TERM
harus cocok dengan salah satu entri dalam database itu. Ada juga perpustakaan lama yang disebut termcap yang memiliki kemampuan lebih sedikit, tetapi terminfo telah menggantikannya. Dalam sistem modern, terminfo adalah bagian dari library ncurses.
Aplikasi biasanya mengambil kemampuan terminal secara langsung menggunakan fungsi perpustakaan seperti tigetstr()
atau mereka menggunakan antarmuka kutukan tingkat yang lebih tinggi untuk mengelola tata letak layar. Apa pun itu, $TERM
dan database terminfo akan dikonsultasikan.