ปุ่ม Backspace, Tab, Del และลูกศรไม่ทำงานใน terminal (ใช้ ssh)


44

เมื่อฉัน ssh ไปยังเครื่อง Ubuntu อื่นด้วยบัญชีของฉัน (ด้วยสิทธิ์ sudo) คีย์ backspace ของฉันสร้างสัญลักษณ์บางอย่างที่น่าอึดอัดใจในการกด เช่นเดียวกันกับปุ่ม Tab, Del และ Arrow

ในทางกลับกันฉันยังมีบัญชีอื่นในเครื่องเดียวกัน & เมื่อฉันผ่านบัญชีนี้เทอร์มินัลของมันทำงานได้อย่างสมบูรณ์แบบ ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้จึงเกิดขึ้น


ฉันมีปัญหาเดียวกัน - โฮสต์ของฉันคือ Win7-64 และระบบแขกระยะไกลของฉันคือทั้ง Ubuntu Server 10.04 บนเซิร์ฟเวอร์เครื่องหนึ่งคีย์ทำงานได้บนอีกเครื่องหนึ่งไม่ใช่
Mateng

ข้อมูลเพิ่มเติม: ฉันเข้าสู่เครื่องระยะไกลด้วย Putty / Kitty
Mateng

คุณสามารถลอง ssh ผ่านโปรแกรมอื่นหรือสร้างโปรไฟล์ใหม่สำหรับระบบเป้าหมายได้หรือไม่?
belacqua

ฉันประสบปัญหากับ cygwin (ใน win 7) ด้วย
gopi1410

สิ่งที่ส่งคืนโดยการพิมพ์echo "$ TERM"เมื่อเกิดเหตุการณ์นี้
david6

คำตอบ:


32

แก้ไข:การอ้างอิง: คำตอบของ Mateng

Mateng อยู่ใกล้ที่ฉันคิดว่าคุณอาจใช้ Bourne Shell อยู่ แต่คุณไม่ควรแก้ไข/etc/passwdไฟล์โดยตรง ลองใช้chshคำสั่งแทน:

chsh -s /bin/bash

ธง -s จะทำให้เปลือกใหม่ (ทุบตีในกรณีนี้) เปลือกเข้าสู่ระบบของคุณไปข้างหน้า


ดูเหมือนว่าเชื่อถือได้. หาก gopi1410 เห็นด้วย 50 reps เป็นของคุณ
Mateng

@Mateng: ตกลงกันและเชื่อมโยงไปยังคำตอบของคุณเพิ่มจะทำให้มันสมบูรณ์
gopi1410

1
ทำงานในฐานะ root:sudo chsh -s /bin/bash
KrisWebDev

1
@ ทำงานให้ฉันมากกว่า 3 ปีต่อมา ขอบคุณมาก! คุณเจ๋งมาก!
goncalotomas

17

การเปลี่ยนแปลงต่อไปนี้สามารถแก้ไขปัญหาให้ฉันได้ ก่อนอื่นฉันตรวจสอบว่าเชลล์ใดที่ทำงานอยู่:

$ echo $0

ซึ่งส่งคืน:

/bin/sh

เมื่อฉันอ่านในโพสต์นี้ใน Ubuntuforumsการเปลี่ยนเปลือกเพื่อ/bin/bashนำวิธีแก้ปัญหา ดังนั้นฉันจึงแก้ไขการตั้งค่าผู้ใช้ของฉัน/etc/passwdเป็น:

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

ฉันออกจากระบบจากนั้นเข้าสู่ระบบอีกครั้ง แปลกฉันต้องเปลี่ยนเชลล์ด้วยตนเอง (อาจแคชบางอย่างใช้งาน) โดยการป้อนนี้:

/bin/bash

Voila!
[ปัญหาเกิดขึ้นเนื่องจากการอัพเดทการแจกจ่าย]


13

เมื่อคุณเริ่มใช้ครั้งแรกลองคำสั่งทั้งสองนี้

stty sane
export TERM=linux

ฉันต้องทำสิ่งนี้กับเครื่องบางอย่างที่ฉันไปเพื่อแก้ไขปัญหานี้อย่างแน่นอน


1
ฉันลองแล้ว แต่ปัญหายังคงอยู่
Mateng

1
คุณลองใช้คำว่า VT100 แทน linux หรือไม่? สิ่งที่เกี่ยวกับstty erase <backspace>(<Backspace> เป็นที่คุณจริงตีที่สำคัญ)
เป็ด Clarris

ด้วย $ stty erase '^[[A' stty: invalid integer argument '\033[A'(ลูกศรขึ้น): ด้วย [Backspace]: $ stty erase '^?'มันใช้งานได้ ด้วย [Tab]: $ stty erase ' ' ไม่มีข้อผิดพลาด แต่จากนั้น [Backspace] กลับไปเป็นพฤติกรรมแปลก ๆ
Mateng

ฉันพยายามexport TERM=VT100แต่ไม่มีประโยชน์
Mateng

1
stty tab0ไม่ช่วย ฉันเดาว่าจำเป็นต้องมีการกำหนดค่าใหม่แบบทั่วไปของ xterm หรือว่าคีย์แมปนั้นผิดหรือเปล่า?
Mateng

5

หนึ่งในวิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้คือการพิมพ์ / bin / bash ที่พรอมต์ของอินเตอร์เฟสบรรทัดคำสั่ง:

$ / bin / bash

คำสั่งดังกล่าวข้างต้นจะดำเนินการ Bourne Again Shell ด้านบนของเชลล์ที่มีอยู่เป็น subprocess สิ่งนี้แสดงให้เห็นถึงข้อเสียของการใช้ทรัพยากรมากขึ้น แต่ไม่มีสิ่งใดที่จะต้องแก้ไขและไม่จำเป็นต้องมีการอนุญาตพิเศษ ตัวอย่างเช่นในเวอร์ชัน Kubuntu ล่าสุดมันจะเริ่มเซสชัน / bin / bash บนอินเตอร์เฟสเชลล์บรรทัดรับคำสั่ง / bin / dash ดีฟอลต์

อย่างไรก็ตามเพื่อยืนยันการเปลี่ยนแปลงอย่างไรก็ตามความเป็นไปได้อย่างหนึ่งคือการแก้ไขไฟล์ / etc / passwd และเพิ่ม / แก้ไข / แทนที่เชลล์เริ่มต้นเป็น / bin / bash หลังจากอักขระ ':' สุดท้ายในบรรทัดที่สอดคล้องกับผู้ใช้ ในการแก้ไขไฟล์นี้จำเป็นต้องมีสิทธิ์ผู้ดูแลระบบ


1

'Gbnome Terminal' ไม่ได้จำลอง 'xterm' อย่างแน่นอน

จาก: Wikipedia >> เทอร์มินัล GNOME

เทอร์มินัล GNOME จำลองเทอร์มินัลจำลอง xterm และให้คุณสมบัติบางอย่างที่เหมือนกัน


บทความเกี่ยวกับปัญหาและแนวทางแก้ไขสามารถดูได้ที่นี่:

Linux Backspace / ลบ mini-HOWTO

ผู้ใช้ลีนุกซ์ทุกคนถูกดักจับไม่ช้าก็เร็วในสถานการณ์ที่มี Backspace และปุ่ม Delete บนคอนโซลและ X ดูเหมือนเป็นไปไม่ได้ บทความนี้อธิบายว่าทำไมสิ่งนี้จึงเกิดขึ้นและเสนอแนวทางแก้ไข ความคิดที่ได้รับจากที่นี่มีความเป็นอิสระในการกระจาย: เนื่องจากเนื้อหาต่าง ๆ ของไฟล์การกำหนดค่าระบบในแต่ละการแจกจ่ายฉันจะพยายามให้ผู้อ่านมีความรู้มากพอที่จะคิดถึงการแก้ไขของเขา / เธอเองหากจำเป็น

ฉันคิดว่าปุ่ม Backspace ควรย้อนกลับไปหนึ่งตัวละครแล้วลบตัวอักษรที่อยู่ใต้เคอร์เซอร์ ในทางกลับกันปุ่มลบควรลบอักขระใต้เคอร์เซอร์โดยไม่ย้าย หากคุณคิดว่าควรใช้ฟังก์ชั่นของทั้งสองปุ่มแม้ว่าแป้นพิมพ์ส่วนใหญ่จะมีลูกศรที่ชี้ไปทางซ้าย (←) บนปุ่ม Backspace แล้วบทความนี้จะไม่ให้วิธีแก้ปัญหาทันที แต่แน่นอนว่าคุณ อาจพบคำอธิบายที่ให้ประโยชน์ที่นี่

วิธีแก้ปัญหาที่ง่ายที่สุดที่ได้รับ (ซึ่งอาจใช้ได้ที่นี่) คือการใช้: bash $ export TERM = gnome


1

ในฐานะผู้ใช้รูทให้แก้ไขไฟล์ / etc / passwd สำหรับผู้ใช้ของคุณและเปลี่ยนจาก / bin / sh เป็น / bin / bash

hdfs: x: 1020: 1001 :: / home / hdfs: / bin / sh to hdfs: x: 1,020: 1001 :: / home / hdfs: / bin / bash

สิ่งนี้ใช้ได้สำหรับฉัน


1

ฉันได้ลองทั้งหมดข้างต้นบวกบันทึกจาก ( ลิงค์นี้ ) ไม่ประสบความสำเร็จ คุณอาจต้องการตรวจสอบการติดตั้งเป็นกลุ่ม

ฉันมักจะใช้ vi ไม่เป็นกลุ่ม ดังนั้นฉันจึงติดตั้งเป็นกลุ่ม

$ sudo apt-get install vim

หลังจากนั้นคีย์บอร์ดก็เริ่มทำงานอย่างถูกต้องเมื่อฉันดำเนินการ vi ดูผลลัพธ์ต่อไปนี้ดูเหมือนว่า vi ได้ทำนามแฝงเป็นกลุ่มหลังจากติดตั้ง:

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

0

นี่เป็นปัญหาความเข้ากันได้กับแป้นพิมพ์เช่นวิธีการตีความในระบบโฮสต์ คุณอาจต้องใช้ j หรือ h เพื่อย้ายในเอดิเตอร์ vi ในโหมดคำสั่ง ลูกศรจะไม่ทำงาน

ตรวจสอบการตั้งค่าโปรไฟล์ -> ความเข้ากันได้ในระบบโฮสต์สำหรับผู้ใช้ที่ระบุ


0

โอเคฉันรู้ว่านี่ไม่ใช่ "วิธีแก้ปัญหา" ต่อการพูดและอาจไม่ช่วยให้คุณหลายคนแต่หวังว่าจะช่วยคุณอย่างน้อย 1คน มันแก้ไขปัญหาของฉัน

อายุหกเดือนของฉันกระแทกบนแป้นพิมพ์ของฉันและปุ่มลูกศรของฉันหยุดทำงานในเซสชันฉาบของฉันลงในกล่อง Debian พวกเขาทำงานได้ทุกที่ (โปรแกรมอื่นทั้งหมดนอกเหนือจากผงสำหรับอุดรู) หลังจาก Googleing และถึงที่นี่ (ฉันกำลังจะปิดแท็บนี้มันไม่ได้แก้ปัญหาให้ฉัน) ฉันลองอะไรบางอย่าง ฉันเปิดเซสชัน ssh ใหม่ไปที่กล่องเดียวกันและแป้นลูกศรทำงาน ฉันเข้าร่วมเซสชันหน้าจอและไม่ทำงาน ดังนั้นมีบางสิ่งเกิดขึ้นที่เชื่อมโยงกับหน้าจอปัจจุบันที่ปิดใช้งานปุ่มลูกศร โชคไม่ดีที่ฉันอยู่กลางโครงการขนาดใหญ่เปิด 28 หน้าจอในเซสชันของฉันและไม่ต้องการปิดเซสชันทำให้สถานที่ของฉันหายไปทั้ง 28 หน้าต่าง

ดังนั้น..

ขณะที่อยู่บนเปลือกหอยฉันลองชุดค่าผสมทั้งหมดที่ฉันสามารถนึกได้ของ CTRL + ขึ้นลงซ้ายขวา ALT + ขึ้นลงซ้ายซ้ายขวา SHIFT + ขึ้นลงลงซ้ายขวา CTRL + ALT + ขึ้นลง ซ้ายขวา CTRL + SHIFT + ขึ้นลงซ้ายขวา ฯลฯ ยังไม่มีโชคฉันลองใช้เมนู windows และปุ่มแอพ windows ที่มีขึ้นลงซ้ายขวา

ตอนนี้ลูกศรของฉันทำงานอีกครั้ง! มีบางอย่างเกี่ยวกับการรวมกันของสิ่งที่อยู่ด้านบนและปุ่มลูกศรแก้ไข


0

ไม่มีคำตอบข้างต้นแก้ไขปัญหาที่เหมือนกันของฉันคือไม่สามารถใช้ backspace หรือคีย์ที่คล้ายกันหลังจาก sshing ไปยังรีโมทจาก Ubuntu (ที่นี่ ubuntu-17.10 พร้อม ncurses-6.0)

มันจบลงด้วยการเป็นปัญหากับ terminfo โดยทั่วไปแล้ว gnome-terminal ของฉันบอกว่ามันเป็นเทอร์มินัล xterm-256color (ผ่านตัวแปร TERM ซึ่งส่งออกโดย ssh ไปยังรีโมต) แต่รีโมตไม่มีการกำหนดค่า terminfo สำหรับ xterm-256color

การทำสิ่งต่อไปนี้แก้ไขปัญหา:

$ 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 โดยไม่มีตัวเลือกใด ๆ จะสร้างรายการแหล่งข้อมูลสำหรับเทอร์มินัลในตัวแปรสภาพแวดล้อม $ TERM ดังนั้นจึงเท่ากับ infocmp -I $ TERM

จากนั้นแหล่งผลลัพธ์จะถูกคอมไพล์ผ่าน tic

ในที่สุดให้ติดตั้งการกำหนดค่า terminfo ที่สอดคล้องกับตำแหน่งระยะไกล ดังนั้นครั้งต่อไปที่ฉันเชื่อมต่อกับ $ remote ผ่าน $ host มันจะรู้เกี่ยวกับเทอร์มินัลของฉัน


บล็อกรหัสของคุณทำอะไร? สร้างคำ config อย่างใด จะดีที่มีคำอธิบายใช้รหัสลึกลับไม่ใช่ความคิดที่ดีที่สุดแม้หน้าคนของพวกเขาจะไม่ชัดเจนสุดเกี่ยวกับผลเริ่มต้นของ infocmp หรือวิธีนี้มีประโยชน์
Xen2050

@ Xen2050: ฉันได้เพิ่มคำอธิบายสำหรับแต่ละคำสั่ง infocmp ที่ไม่มีตัวเลือกใด ๆ เทียบเท่ากับ infocmp -I $ TERM นี่อธิบายไว้ใน man page แต่ในสองส่วน: "หากไม่มีการระบุตัวเลือกและระบุชื่อศูนย์หรือหนึ่งคำศัพท์ตัวเลือก -I จะถูกนำมาใช้ [... ] ตัวเลือก -I, -L และ -C จะสร้างรายการแหล่งข้อมูลสำหรับแต่ละเทอร์มินัลที่มีชื่อ - ฉันใช้ชื่อ terminfo หากไม่ได้กำหนดชื่อชื่อไว้ตัวแปรสภาพแวดล้อม TERM จะถูกใช้สำหรับชื่อเทอร์มินัล "
user1448926
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.