Gnome-Terminal melaporkan $ TERM menjadi `xterm`

21

Pada instalasi Ubuntu 12.10 yang bersih, terminal gnome default melaporkan $ TERM menjadi xterm di mana ia seharusnya benar-benar melaporkan xterm-256color. Apa cara terbaik untuk mengubah ini? Saya menghindari meletakkan ini di .bashrc saya karena itu hanya meminta masalah.

Freddy
sumber
2
Mau jelaskan mengapa xterm salah? Afaik kita semua memiliki xterm. Selain itu: juga ingin menjelaskan mengapa memasukkan ini ke bashrc meminta masalah?
Rinzwind
4
xtermsalah karena sebagian besar aplikasi tidak akan berfungsi dalam mode 256-warna kecuali itu xterm-256coloratau screen-256color(vim dan tmux menjadi yang utama yang saya pedulikan). Seperti @Freddy saya lebih suka untuk tidak mengatur ini di profil shell saya, karena saya mungkin menghubungkan dari tipe terminal yang berbeda melalui SSH, dan karena itu benar-benar tugas terminal emulator untuk mengatur ini. Saya kagum bahwa terminal gnome tidak menyediakan banyak emulasi.
Jim Stewart
3
vte-0.40 (yang mungkin akan muncul di Ubuntu 15.10) mengubah default menjadi xterm-256colors.
egmont

Jawaban:

17

Anda disarankan untuk tidak mengubah skrip startup Anda, khususnya ~/.bashrc. "Deteksi terminal" apa pun yang menggunakan arus $TERMatau $COLORTERMmasuk ~/.profilehanyalah dugaan, dan dapat, seperti yang Anda katakan, menyebabkan masalah saat menggunakan terminal lain (misalnya, Putty atau xterm). Terminal emulator seharusnya diatur $TERM, dan ini tidak boleh diubah dari dalam shell.

Terminal Gnome, AFAIK, tidak menawarkan konfigurasi untuk mengubahnya TERM, tetapi memungkinkan Anda untuk mengubah perintah startup Anda, dan hanya itu yang Anda butuhkan. Ini triknya:

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

Kemudian gunakan perintah berikut:

env TERM=xterm-256color /bin/bash

Ganti saja /bin/bashdengan shell pilihan Anda jika berbeda. Dan tidak, Anda tidak dapat menggunakan "$SHELL"di dalam garis itu untuk deteksi otomatis shell;) Anda harus membuat hard-code

MestreLion
sumber
Ada opsi dalam pengaturan itu untuk "When Command Exits :." Opsinya adalah "Keluar dari Terminal," "restart perintah," dan "tahan terminal terbuka." Yang mana yang harus saya pilih?
Caleb Jay
@ CalebJay: mana pun yang Anda suka, opsi itu tidak terkait dengan warna terminal. Apa yang harus dilakukan ketika perintah berakhir adalah murni preferensi.
MestreLion
12

Untuk menghubungkan dengan terminal yang tidak dapat melakukan 256 warna.

Akan jauh lebih baik untuk mendeteksi terminal secara khusus $COLORTERM. Cari gnome-terminal, xfce4-terminal, dll, dan kemudian atur $TERMvariabelnya xterm-256color.

Saya melakukannya dengan:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi
Jordan
sumber
4
Perlu diketahui bahwa Terminal Gnome dari 3.13 dan seterusnya tidak diatur COLORTERMlagi.
MestreLion
2
Untuk versi yang tidak lagi disetel, COLORTERMAnda dapat mengandalkan VTE_VERSION.
egmont
6

Meskipun benar bahwa terminfo memiliki xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap baru saja xterm ( /usr/share/vte/termcap/xterm), jadi mengubah $TERMtidak disarankan.

Bagaimanapun, $TERMtidak diatur oleh gnome-terminal, tetapi oleh vte. Nilai default untuk variabel lingkungan itu dapat diubah baik pada waktu kompilasi (memberikan opsi ke skrip konfigurasi) atau dengan memanggil vte_pty_set_term()fungsi. Melihat sumber-sumber terminal gnome, saya melihat bahwa vte_pty_set_termtidak akan pernah dipanggil, jadi saya dapat mengatakan bahwa tidak ada cara untuk memodifikasi $TERMdengan mengedit pengaturan terminal-gnome.

Yang harus Anda lakukan adalah menempatkan potongan kode berikut di ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Andrea Corbellini
sumber
==adalah sintaks bash-only, jangan gunakan itu untuk cuplikan yang bersumber dari sh(yang merupakan kasus dengan ~/.profiledi DEs). Juga, sintaks "x $ .." tidak diperlukan karena Anda mengutip dengan benar ekspansi var.
MestreLion
@EstreLion: silakan mengedit pertanyaan saya.
Andrea Corbellini
Saya mencoba, tetapi AU membutuhkan perubahan lebih dari 6 karakter, karenanya komentar
MestreLion