Để làm gì $TERM
?
Các $TERM
biến là để sử dụng bởi các ứng dụng để tận dụng khả năng của thiết bị đầu cuối đó.
Ví dụ: nếu một chương trình muốn hiển thị văn bản màu, trước tiên nó phải tìm hiểu xem thiết bị đầu cuối bạn đang sử dụng có hỗ trợ văn bản màu hay không, và nếu có, làm thế nào để làm văn bản màu.
Cách thức hoạt động này là hệ thống giữ một thư viện các thiết bị đầu cuối đã biết và khả năng của chúng. Trên hầu hết các hệ thống, đây là /usr/share/terminfo
(cũng có termcap, nhưng nó không được sử dụng nhiều nữa).
Vì vậy, giả sử bạn có một chương trình muốn hiển thị văn bản màu đỏ. Về cơ bản, nó thực hiện một cuộc gọi đến thư viện terminfo có nội dung " cung cấp cho tôi chuỗi byte tôi phải gửi cho văn bản màu đỏ cho thiết bị đầu cuối xterm ". Sau đó, nó chỉ cần lấy các byte và in chúng ra.
Bạn có thể thử điều này bằng cách làm tput setf 4; echo hi
. Điều này sẽ có được setf
khả năng terminfo và truyền cho nó một tham số 4
, đó là màu bạn muốn.
Tại sao thiết bị đầu cuối gnome nói về chính nó:
Bây giờ hãy nói rằng bạn có một số trình giả lập thiết bị đầu cuối mới sáng bóng vừa được phát hành và thư viện terminfo của hệ thống chưa có định nghĩa cho nó. Khi ứng dụng của bạn tìm kiếm cách thực hiện một cái gì đó, nó sẽ thất bại vì thiết bị đầu cuối không được biết đến.
Cách thiết bị đầu cuối của bạn có được điều này là bằng cách nói dối về việc đó là ai. Vì vậy, thiết bị đầu cuối gnome của bạn đang nói " Tôi là xterm ".
Xterm là một thiết bị đầu cuối rất cơ bản đã có từ thời X11, và do đó hầu hết các trình giả lập thiết bị đầu cuối đều hỗ trợ những gì nó hỗ trợ. Vì vậy, bởi thiết bị đầu cuối gnome nói rằng đó là một xterm, nhiều khả năng nó có một định nghĩa trong thư viện terminfo.
Nhược điểm của việc nói dối về loại thiết bị đầu cuối của bạn là thiết bị đầu cuối thực sự có thể hỗ trợ nhiều hơn xterm (ví dụ, nhiều thiết bị đầu cuối mới hỗ trợ 256 màu, trong khi các thiết bị đầu cuối cũ chỉ hỗ trợ 16). Vì vậy, bạn có một sự đánh đổi, có được nhiều tính năng hơn hoặc có nhiều khả năng tương thích hơn. Hầu hết các thiết bị đầu cuối sẽ chọn để tương thích nhiều hơn, và do đó chọn quảng cáo chính họ như xterm
.
Nếu bạn muốn ghi đè lên điều này, nhiều thiết bị đầu cuối sẽ cung cấp một số cách cấu hình hành vi. Nhưng bạn cũng có thể làm export TERM=gnome-terminal
.