Bagaimana nilai variabel shell TERM default ditetapkan?

13

Setelah memutakhirkan ke Maverick saya mengatur variabel TERM saya ke 'dumb', ini tidak terjadi dengan dir home yang sama dijalankan dari Lucid dan saya tidak secara manual mengubah apa pun yang terkait dengan TERM.

Adakah ide dari mana variabel JANGKA diharapkan akan ditetapkan?

João Pinto
sumber

Jawaban:

13

Untuk menguraikan apa yang dikatakan Gilles, misalkan Anda melakukan koneksi jarak jauh ke ubuntu Anda dari Windows menggunakan Putty.

Dalam opsi konfigurasi dempul, di bawah Koneksi-> Data ada pengaturan yang disebut string tipe terminal. Anda dapat mengatur JANGKA Anda di sana dan dempul menginstruksikan SSH untuk mengatur variabel lingkungan itu. Pada titik tertentu setelah itu shell Anda akan dieksekusi, mungkin / bin / bash dan mendapatkan lingkungannya dari proses induknya, mungkin proses sshd.

Hal yang sama berlaku jika Anda ssh dari kotak linux jauh, hanya saja variabel lingkungan TERM lokal dilewatkan melalui ssh ke koneksi jarak jauh.

Dalam kasus emulator terminal, itu adalah tugas terminal emulator untuk mengatur variabel lingkungan TERM. mis. getty menyetel TERM ke "linux" dan mem-fork proses shell (/ bin / bash). atau gnome-terminal menyetel TERM ke "xterm" dan melakukan proses shell.

Jay _silly_evarlast_ Gelatik
sumber
Saya telah memeriksa dan terminal gnome berfungsi dengan baik, itu benar-benar bug "emulator". Saya menggunakan terminator. Terima kasih
João Pinto
9

Untuk menjawab pertanyaan Anda secara harfiah, emulator terminal seharusnya diatur $TERM

Untuk menyelesaikan masalah Anda, Anda perlu setidaknya mengetahui terminal emulator apa yang Anda gunakan. Ini bisa menjadi bug atau kesalahan konfigurasi di emulator terminal atau masalah dengan file shell Anda startup (mungkin ~/.bashrc, tapi mungkin ~/.bash_profile, /etc/bashrc, /etc/profile, ...).

¹ Anggap Anda tidak menggunakan terminal perangkat keras; maka itu akan menjadi argumen untuk getty, dipanggil dari inittab(rilis yang lebih lama menggunakan SysVinit) atau /etc/init/tty*.conf(Ubuntu ≥9.10, menggunakan Upstart).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2
getty tidak dipanggil dari inittab, Ubuntu tidak memiliki inittab lagi! Konsol didefinisikan oleh /etc/init/tty*.conf
LassePoulsen
4
Saya pikir Anda mendapatkan lencana untuk penggunaan pertama yang saya lihat dari catatan kaki dalam jawaban :-)
poolie
sekarang karena 15,04+ pemula baru tidak lagi default (lagi) dan systemd menanganinya di getty @ service, saya masih terbiasa dengan perubahan itu (itu angka setelah saya mempelajari segala sesuatu tentang pemula baru masuk dan keluar, sekarang saya punya untuk melakukan hal yang sama dengan systemd ... meh !!)
osirisgothra
1

Jika Anda ingin mengganti terminal, pastikan Anda memeriksa fungsionalitas pembaruan-alternatif.

Contohnya:

update-alternatives --config x-terminal-emulator

Banyak dari berbagai opsi standar sistem di Ubuntu ditetapkan melalui metode ini. Satu lagi yang umum adalah www-browser

update-alternatives --config x-www-browser
Rick
sumber