Saya saat ini menggunakan terminal Fedora 18 gnome , kemudian mulai tmux
multiplexer di dalamnya. Setelah saya terhubung ke server CentOS 5 melalui ssh
perintah, saya menemukan:
ls
hasil tidak memiliki warnatmux
,screen
,hexedit
,htop
Semua gagal untuk memulai dengan pesan error seperti:terminal terbuka gagal: terminal hilang atau tidak cocok: layar-256color
Tampaknya ssh
melewati variabel lingkungan $ TERM ke server, tetapi saya tidak dapat menemukannya di /etc/ssh/ssh_config
file Fedora 18.
Meskipun saya dapat secara manual mengubah variabel $ TERM di server, setiap kali saya terhubung, itu terjadi lagi. Lantas bagaimana cara mencegahnya?
sumber
infocmp
dantic
, setelah dikompilasi, tidak perlu untuk sementara berubah$TERM
lagi omong-omong, saya baru saja menyalin (rsync)/usr/share/terminfo/s/screen-256color
dari Fedora 18 ke CentOS, sepertinya berfungsi ok (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s
).tmux
di terminal gnome-Fedora 18,tmux
mengubah$TERM
nilaiscreen-256color
darixterm-256color
.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'
dapat disingkat menjadiinfocmp | ssh root@remote-host "tic -"
. Ini berfungsi karena ketika Anda memiliki pipa itu dapat diakses sebagai file dengan menggunakan - dan untungnya pipa bekerja di SSH.tic
(terminfo compiler) yang dihasilkan akan sama dari satu sistem ke sistem berikutnya atau lokasinya sama.tic
mungkin juga memastikan izinnya benar atau membuat direktori perantara di mana diperlukan.Dalam kasus saya, saya hanya menambahkan alias ke
.zshrc
(.bashrc
jika menggunakan bash) di desktop lokal saya:Jika Anda sudah menggunakan alias, sesuaikan untuk memasukkan tugas Lingkungan.
sumber
Saya menempatkan ini di
.bashrc
host jarak jauh saya:Dengan begitu, keduanya
xterm-256color
danscreen-265color
ditangani dengan benar. Juga, saya sudah mengeluarkan catatan sehingga jika server kemudian ditingkatkan dan mendukung 256 warna, saya tidak akan membenturkan kepala saya ke dinding bertanya-tanya mengapa variabel TERM saya akan berubah ketika SSHing.sumber
export TERM=${TERM%%-256color}
Mengubah
$TERM
mungkin berhasil, tetapi saya tidak menyarankan ini, itu hanya solusi dan bukan solusi.Ketika saya menemukan masalah ini pada sistem saya, saya memperbaikinya dengan menginstal dukungan untuk jenis terminal paling umum ke sistem jarak jauh:
yum install ncurses-base
untukscreen-256color
di CentOSyum install ncurses-term
untukscreen-256color-bce
di CentOSapt install ncurses-base
untuk keduanyascreen-256color
danscreen-256color-bce
di Debian, Ubuntu dan MintPaket-paket yang berhubungan dengan ncurses juga menyediakan dukungan untuk banyak terminal lain, dan mereka juga tersedia di semua distribusi besar lainnya. (Tapi untuk kasus penggunaan saya dan pertanyaan Anda ini harus cukup info)
sumber
Lihat man ssh_config:
dan man sshd_config:
Menurut itu, defaultnya adalah tidak mengirim variabel apa pun, tetapi TERM tampaknya istimewa. Tetap dikirim.
Oleh karena itu Anda dapat mengubah JANGKA WAKTU saat memanggil ssh (seperti
TERM=xterm ssh ...
), mengubahnya setelah masuk (seperti di.bash_profile
), atau menentukan jenis JANGKA yang tidak dikenal di sisi server (dengan asumsi Anda memiliki akses root di sana). Lihat jawaban lain untuk detailnya.sumber
$TERM
tidak akan benar-benar lebih baik daripada mengaturnya ke nilai yang tidak didukung.$TERM
sementara mungkin merupakan solusi, tetapi saya harus melakukannya setiap waktu. by the way, tampaknya bahwa kedua CentOS 5 dan Fedora 18 Terima Env semua variabel lingkungan lokal (LANG
,LC_*
, ...)