Gnome-Terminal báo cáo $ TERM là `xterm`


21

Trên bản cài đặt sạch Ubuntu 12.10, thiết bị đầu cuối gnome mặc định đang báo cáo $ TERM là xterm, nơi nó thực sự cần báo cáo xterm-256color. Cách tốt nhất để thay đổi điều này là gì? Tôi đang tránh đưa cái này vào .bashrc vì điều đó chỉ gây rắc rối.


2
Quan tâm để giải thích tại sao xterm là sai? Afaik tất cả chúng ta đều có xterm. Bên cạnh đó: cũng quan tâm để giải thích tại sao đưa điều này vào bashrc lại yêu cầu sự cố?
Rinzwind

4
xtermlà sai vì hầu hết các ứng dụng sẽ không hoạt động ở chế độ 256 màu trừ khi nó xterm-256colorhoặc screen-256color(vim và tmux là những ứng dụng chính tôi quan tâm). Giống như @Freddy, tôi không muốn đặt những thứ này trong hồ sơ shell của mình, bởi vì tôi có thể đang kết nối từ một loại thiết bị đầu cuối khác trên SSH và vì đó thực sự là công việc của trình giả lập thiết bị đầu cuối để thiết lập điều này. Tôi ngạc nhiên rằng gnome-terminal không cung cấp nhiều mô phỏng.
Jim Stewart

3
vte-0.40 (có thể sẽ xuất hiện trong Ubuntu 15.10) đã thay đổi mặc định thành xterm-256colors.
egmont

Câu trả lời:


17

Bạn được khuyên không nên thay đổi tập lệnh khởi động của bạn, đặc biệt ~/.bashrc. Bất kỳ "phát hiện thiết bị đầu cuối" nào sử dụng hiện tại $TERMhoặc $COLORTERMtrong ~/.profilechỉ là dự đoán và có thể, như bạn đã nói, gây ra sự cố khi sử dụng các thiết bị đầu cuối khác (giả sử, Putty hoặc xterm). Trình giả lập thiết bị đầu cuối được thiết lập $TERMkhông nên thay đổi điều này từ bên trong trình bao.

Thiết bị đầu cuối Gnome, AFAIK, không cung cấp cấu hình để thay đổi cấu hình TERM, nhưng nó cho phép bạn thay đổi lệnh khởi động và đó là tất cả những gì bạn cần. Đây là mẹo:

Profile Preferences => Title and Command => Run a custom command instead of my shell

Sau đó sử dụng lệnh sau:

env TERM=xterm-256color /bin/bash

Chỉ cần thay thế /bin/bashbằng vỏ ưa thích của bạn nếu nó khác. Và không, bạn không thể sử dụng "$SHELL"trong dòng đó để tự động phát hiện shell;) Bạn phải mã hóa nó


Có một tùy chọn trong các cài đặt đó là "Khi Thoát lệnh :." Các tùy chọn là "Thoát khỏi Terminal", "khởi động lại lệnh" và "giữ cho thiết bị đầu cuối mở." Tôi nên chọn cái nào?
Caleb Jay

@CalebJay: tùy theo bạn thích, tùy chọn đó không liên quan đến màu thiết bị đầu cuối. Phải làm gì khi lệnh kết thúc hoàn toàn là vấn đề ưu tiên.
MestreLion

12

Để kết nối với thiết bị đầu cuối không thể thực hiện 256 màu.

Sẽ tốt hơn nhiều khi phát hiện thiết bị đầu cuối cụ thể với $COLORTERM. Tìm gnome-terminal, xfce4-terminal, v.v., sau đó đặt $TERMbiến thành xterm-256color.

Tôi làm điều đó với:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi

4
Chỉ cần lưu ý rằng Gnome Terminal từ 3.13 trở đi không được đặt COLORTERMnữa.
MestreLion

2
Đối với các phiên bản không còn được thiết lập, COLORTERMbạn có thể dựa vào VTE_VERSION.
egmont

6

Mặc dù đúng là terminfo có xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap chỉ có xterm ( /usr/share/vte/termcap/xterm), vì vậy $TERMkhông nên thay đổi .

Dù sao, $TERMkhông được thiết lập bởi gnome-terminal, mà bởi vte. Giá trị mặc định cho biến môi trường đó có thể được thay đổi vào thời gian biên dịch (cung cấp tùy chọn cho tập lệnh cấu hình) hoặc bằng cách gọi vte_pty_set_term()hàm. Nhìn vào các nguồn của gnome-terminal, tôi thấy rằng vte_pty_set_termnó không bao giờ được gọi, vì vậy tôi có thể nói rằng không có cách nào để sửa đổi $TERMbằng cách chỉnh sửa cài đặt của gnome-terminal.

Những gì bạn phải làm là đặt đoạn mã sau vào ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi

==là một cú pháp chỉ bash, không sử dụng nó cho các đoạn được dự định có nguồn gốc bởi sh(đó là trường hợp ~/.profiletrong DE). Ngoài ra, cú pháp "x $ .." là không cần thiết vì bạn đang trích dẫn chính xác việc mở rộng var.
MestreLion

@MestreLion: vui lòng chỉnh sửa câu hỏi của tôi.
Andrea Corbellini

Tôi đã thử, nhưng AU yêu cầu thay đổi nhiều hơn 6 ký tự, do đó nhận xét
MestreLion
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.