Tombol mundur, Tab, Del dan panah tidak berfungsi di terminal (menggunakan ssh)

44

Ketika saya ssh ke mesin Ubuntu lain dengan akun saya (dengan izin sudo), tombol backspace saya menghasilkan beberapa simbol canggung saat menekan. Juga Kunci Tab, Del dan Panah tidak berfungsi.

Di sisi lain, saya juga memiliki akun lain di mesin yang sama & ketika saya ssh melalui akun ini, terminalnya berfungsi dengan baik. Saya tidak tahu mengapa ini terjadi.

gopi1410
sumber
Saya memiliki masalah yang sama - host saya adalah Win7-64 dan sistem tamu jarak jauh saya adalah Ubuntu Server 10.04. Di satu server, kunci berfungsi, yang lain, tidak.
Mateng
Informasi Tambahan: Saya memasuki mesin jarak jauh dengan Putty / Kitty
Mateng
Bisakah Anda mencoba ssh melalui program lain, atau membuat profil baru untuk sistem target?
belacqua
Saya menghadapi masalah dengan cygwin (dalam kemenangan 7) juga
gopi1410
Apa yang dikembalikan dengan mengetikkan gema "$ TERM" , saat ini terjadi?
david6

Jawaban:

32

EDIT: Referensi: Mateng ini jawabannya

Mateng dekat dengan yang saya pikir Anda mungkin menjalankan Bourne Shell. Tetapi Anda tidak boleh mengedit /etc/passwdfile Anda secara langsung. Coba gunakan chshperintah sebagai gantinya:

chsh -s /bin/bash

Bendera -s akan membuat shell baru (Bash dalam kasus ini) shell login Anda, maju.

Harun
sumber
Kelihatannya mantap. Jika gopi1410 setuju, 50 repetisi adalah milikmu.
Mateng
@Mateng: setuju, & tautan ke jawaban Anda ditambahkan untuk membuatnya lengkap
gopi1410
1
Jalankan sebagai root:sudo chsh -s /bin/bash
KrisWebDev
1
@Bekerja untuk saya lebih dari 3 tahun kemudian. Terima kasih banyak! Kamu luar biasa!
goncalotomas
17

Perubahan berikut memecahkan masalah bagi saya. Pertama, saya memeriksa shell mana yang sedang berjalan:

$ echo $0

yang dikembalikan:

/bin/sh

Seperti yang saya baca di posting ini di Ubuntuforums , mengganti shell untuk /bin/bashmembawa solusinya. Jadi saya mengedit pengaturan pengguna saya /etc/passwdke:

johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash

Saya keluar, lalu masuk lagi. Anehnya, saya harus mengganti shell secara manual (mungkin beberapa cache aktif) dengan memasukkan ini:

/bin/bash

Voila!
[Masalah muncul karena pembaruan distribusi.]

Mateng
sumber
13

saat pertama kali Anda masuk, coba dua perintah ini

stty sane
export TERM=linux

Saya harus melakukan ini pada beberapa mesin yang saya masuki untuk memperbaiki masalah ini

Drake Clarris
sumber
1
Saya sudah mencobanya, tetapi masalahnya tetap ada
Mateng
1
apakah Anda mencoba istilah sebagai VT100 bukan linux? bagaimana dengan stty erase <backspace>(<backspasi> berada di tempat Anda menekan tombol)
Drake Clarris
Dengan (Panah Up): $ stty erase '^[[A' stty: invalid integer argument '\033[A'. Dengan [Backspace]: $ stty erase '^?'berfungsi. Dengan [Tab]: $ stty erase ' ' tidak ada kesalahan, tetapi kemudian [Backspace] kembali ke perilaku aneh.
Mateng
Saya mencoba export TERM=VT100, tetapi tidak berhasil.
Mateng
1
stty tab0tidak membantu. Saya kira, beberapa jenis konfigurasi ulang umum xterm diperlukan. Atau keymap salah?
Mateng
5

Salah satu cara termudah untuk memperbaiki masalah ini adalah dengan mengetik / bin / bash pada prompt antarmuka baris perintah:

$ / bin / bash

Perintah yang disebutkan sebelumnya akan menjalankan Bourne Again Shell di atas shell yang ada sebagai subproses. Ini menyajikan kelemahan menggunakan lebih banyak sumber daya, tetapi tidak ada yang harus diedit dan tidak diperlukan izin khusus. Sebagai contoh, dalam versi Kubuntu baru-baru ini akan memulai sesi / bin / bash di atas antarmuka shell command line / bin / dash.

Namun, untuk mempertahankan perubahan, satu kemungkinan adalah mengedit file / etc / passwd dan menambah / mengedit / mengganti shell default ke / bin / bash setelah karakter ':' terakhir di baris yang sesuai dengan pengguna. Namun, untuk mengedit file ini, hak administrator akan diperlukan.

nightsinwhiteaustin
sumber
1

'Gbnome Terminal' tidak benar-benar meniru 'xterm' ..

dari: Wikipedia >> Terminal GNOME

Terminal GNOME mengemulasi emulator terminal xterm dan menyediakan beberapa fitur yang sama.


Risalah tentang masalah dan solusi dapat ditemukan di sini:

Linux Backspace / Delete mini-HOWTO

Setiap pengguna Linux cepat atau lambat terperangkap dalam situasi di mana bekerja dengan Backspace dan Delete keys pada konsol dan X sepertinya mustahil. Makalah ini menjelaskan mengapa ini terjadi dan menyarankan solusi. Gagasan yang diberikan di sini pada dasarnya adalah distribusi-independen: karena konten file konfigurasi sistem yang sangat berbeda di setiap distribusi, saya akan mencoba memberi pembaca pengetahuan yang cukup untuk memikirkan perbaikannya sendiri, jika perlu.

Saya berasumsi bahwa tombol Backspace harus kembali satu karakter dan kemudian menghapus karakter di bawah kursor. Di sisi lain, tombol Hapus harus menghapus karakter di bawah kursor, tanpa memindahkannya. Jika Anda berpikir bahwa fungsi dari dua tombol harus dipertukarkan, terlepas dari kenyataan bahwa sebagian besar keyboard menampilkan panah yang menunjuk ke kiri (←) pada tombol Backspace, maka makalah ini tidak akan memberi Anda solusi segera, tetapi yang pasti Anda semoga penjelasan yang diberikan di sini bermanfaat.

Solusi paling sederhana yang diberikan (yang mungkin berfungsi di sini) adalah dengan menggunakan: bash $ export TERM = gnome

david6
sumber
1

Sebagai pengguna root, edit / etc / passwd file untuk pengguna Anda dan ubah dari / bin / sh ke / bin / bash

hdfs: x: 1020: 1001 :: / home / hdfs: / bin / sh ke hdfs: x: 1020: 1001 :: / home / hdfs: / bin / bash

Ini berhasil untuk saya.

Nagaraj Vittal
sumber
1

Saya mencoba semua catatan plus di atas dari ( tautan ini ) tanpa hasil. Anda mungkin ingin memeriksa vim diinstal.

Saya biasanya menggunakan vi bukan vim. Jadi saya menginstal vim.

$ sudo apt-get install vim

Setelah itu, stroke keyboard mulai berfungsi dengan baik ketika saya menjalankan vi. Melihat output berikut ini, sepertinya vi dibuat alias untuk vim setelah instalasi:

$ ls -al /etc/alternatives | grep vi 
lrwxrwxrwx   1 root root    18 Jan 13 09:38 vi -> /usr/bin/vim.basic
jtlindsey
sumber
0

Ini adalah masalah kompatibilitas dengan keyboard, yaitu, bagaimana ia ditafsirkan dalam sistem host. Anda mungkin harus menggunakan j atau h untuk bergerak di editor vi dalam mode perintah. Panah tidak akan berfungsi.

Periksa preferensi profil-> kompatibilitas dalam sistem host untuk pengguna tertentu.

sai siva sundar
sumber
0

Oke, saya tahu ini bukan "solusi" per kata, dan mungkin tidak membantu banyak dari Anda , tapi mudah-mudahan ini membantu setidaknya 1 dari Anda . Itu memang memperbaiki masalah saya.

Anak saya yang berumur enam bulan menggedor keyboard saya, dan tombol panah saya berhenti bekerja pada sesi dempul saya ke dalam kotak Debian. Mereka memang bekerja di tempat lain (semua program lain di luar dempul). Setelah Googleing dan bahkan mendarat di sini (saya akan menutup tab ini, itu tidak menyelesaikannya untuk saya). Saya mencoba sesuatu. Saya membuka sesi ssh baru ke kotak yang sama, dan tombol panah saya berfungsi. Saya bergabung dengan sesi layar saya dan mereka tidak bekerja. Jadi sesuatu terjadi begitu saja terkait dengan sesi layar saat ini menonaktifkan tombol panah. Sayangnya, saya berada di tengah-tengah proyek besar, memiliki 28 jendela terbuka di sesi layar saya, dan tidak ingin menutup sesi, kehilangan tempat saya di semua 28 jendela.

Begitu..

Sementara di bash shell, saya mencoba semua kombinasi yang dapat saya pikirkan, dari CTRL + atas, bawah, kiri kanan, ALT + atas, bawah, kiri, kanan, SHIFT + atas, bawah, kiri kanan, CTRL + ALT + atas, bawah , kiri kanan, CTRL + SHIFT + atas, bawah, kiri kanan, dll. Masih tidak berhasil, saya juga mencoba menu windows dan kunci aplikasi windows dengan naik, turun, kiri kanan.

Sekarang panah saya bekerja lagi! Sesuatu tentang salah satu kombinasi dari apa yang ada di atas dan tombol panah memperbaikinya.

PyTis
sumber
0

Tidak ada jawaban di atas yang memperbaiki masalah identik saya, yaitu tidak dapat menggunakan backspace atau kunci yang sama setelah sshing ke remote dari Ubuntu (di sini ubuntu-17.10 dengan ncurses-6.0).

Itu akhirnya menjadi masalah dengan terminfo. Pada dasarnya, terminal gnome saya mengatakan ini terminal xterm-256color (melalui variabel TERM, yang diekspor oleh ssh ke remote) tetapi remote tidak memiliki konfigurasi terminfo untuk xterm-256color.

Melakukan hal berikut memperbaiki masalah:

$ host: echo $ TERM
xterm-256color
$ host: infocmp> terminfo.src
$ host: tic terminfo.src
$ host: scp .terminfo / x / xterm-256color $ remote: / usr / share / terminfo / x / xterm-256color

infocmp, tanpa opsi apa pun, menghasilkan daftar sumber untuk terminal dalam variabel lingkungan $ TERM. Jadi itu setara dengan infocmp -I $ TERM.

Kemudian sumber yang dihasilkan dikompilasi melalui tic.

Akhirnya, instal konfigurasi terminfo yang sesuai ke lokasi jarak jauh. Jadi, lain kali saya terhubung ke $ remote melalui $ host, ia akan tahu tentang terminal saya.

pengguna1448926
sumber
Apa yang dilakukan oleh blok kode Anda? buat istilah config entah bagaimana? Akan menyenangkan untuk memiliki beberapa penjelasan, menjalankan kode misteri bukan ide terbaik, bahkan halaman manual mereka tidak super jelas tentang efek default dari infocmp, atau bagaimana ini berguna
Xen2050
@ Xen2050: Saya telah menambahkan penjelasan untuk setiap perintah. infocmp tanpa opsi apa pun setara dengan infocmp -I $ TERM. Ini dijelaskan di halaman manual tetapi dalam dua bagian: "Jika tidak ada opsi yang ditentukan dan nol atau satu nama term ditentukan, opsi -I akan diasumsikan. [...] Opsi -I, -L, dan -C akan menghasilkan daftar sumber untuk setiap terminal bernama. -Saya menggunakan nama terminfo Jika tidak ada termnames yang diberikan, variabel lingkungan TERM akan digunakan untuk nama terminal. "
user1448926