Tasti Backspace, Tab, Canc e freccia non funzionanti nel terminale (usando ssh)


44

Quando inserisco un altro computer Ubuntu con il mio account (con permessi sudo), il mio tasto backspace genera alcuni simboli scomodi quando si preme. Anche i tasti Tab, Canc e Freccia non funzionano.

D'altra parte, ho anche un altro account sulla stessa macchina e quando sfoglio questo account, il suo terminale funziona perfettamente. Non riuscivo a capire perché questo stesse accadendo.


Ho lo stesso problema: il mio host è Win7-64 e i miei sistemi guest remoti sono entrambi Ubuntu Server 10.04. Su un server, le chiavi funzionano, su un altro no.
Mateng,

Informazioni aggiuntive:
entro

Puoi provare a ssh tramite un altro programma o creare un nuovo profilo per il sistema di destinazione?
Belacqua,

Ho anche affrontato il problema con Cygwin (nella vittoria 7)
gopi1410,

Cosa viene restituito digitando echo "$ TERM" , quando si verifica?
david6,

Risposte:


32

EDIT: Riferimento: la risposta di Mateng

Mateng è molto vicino al fatto che penso che tu stia probabilmente eseguendo Bourne Shell. Ma non dovresti modificare /etc/passwddirettamente il tuo file. Prova invece a utilizzare il chshcomando:

chsh -s /bin/bash

Il flag -s renderà la nuova shell (Bash in questo caso) la tua shell di accesso, andando avanti.


Sembra giusto. Se gopi1410 è d'accordo, le 50 ripetizioni sono tue.
Mateng,

@Mateng: concordato e aggiunto un link alla tua risposta per completarla
gopi1410

1
Esegui come root:sudo chsh -s /bin/bash
KrisWebDev il

1
@Worked per me più di 3 anni dopo. Grazie mille! Sei fantastico!
goncalotomas,

17

Le seguenti modifiche hanno risolto il problema per me. Innanzitutto, ho verificato quale shell era in esecuzione:

$ echo $0

che ha restituito:

/bin/sh

Come ho letto in questo post su Ubuntuforums , cambiare la shell per /bin/bashportare la soluzione. Quindi ho modificato le mie impostazioni utente in /etc/passwd:

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

Mi sono disconnesso, quindi ho effettuato nuovamente l'accesso. Stranamente, ho dovuto cambiare manualmente la shell (forse un po 'di cache era attiva) inserendo questo:

/bin/bash

Ecco!
[Il problema è sorto a causa di un aggiornamento della distribuzione.]


13

quando si entra per la prima volta, provare questi due comandi

stty sane
export TERM=linux

Devo farlo su alcune macchine in cui vado per risolvere esattamente questo problema


1
Ci ho provato, ma il problema persiste
Mateng,

1
hai provato a chiamare VT100 invece di linux? che dire stty erase <backspace>(<backspace> è dove hai effettivamente
premuto

Con (freccia su): $ stty erase '^[[A' stty: invalid integer argument '\033[A'. Con [Backspace]: $ stty erase '^?'funziona. Con [Tab]: $ stty erase ' ' nessun errore, ma poi [Backspace] torna al comportamento dispari.
Mateng,

Ci ho provato export TERM=VT100, ma senza successo .
Mateng,

1
stty tab0non aiuta. Immagino sia necessaria una sorta di riconfigurazione generale di xterm. O la mappa dei tasti è semplicemente sbagliata?
Mateng,

5

Uno dei modi più semplici per risolvere questo problema è digitare / bin / bash al prompt dell'interfaccia della riga di comando:

$ / bin / bash

Il comando sopra menzionato eseguirà la Bourne Again Shell sopra la shell esistente come sottoprocesso. Ciò presenta lo svantaggio di utilizzare più risorse, ma non è necessario modificare nulla e non sono richieste autorizzazioni speciali. Ad esempio, nelle recenti versioni di Kubuntu avvierà una sessione / bin / bash in cima all'interfaccia della shell della riga di comando / bin / dash predefinita.

Per persistere nelle modifiche, tuttavia, una possibilità è modificare il file / etc / passwd e aggiungere / modificare / sostituire la shell predefinita in / bin / bash dopo l'ultimo carattere ':' nella riga corrispondente all'utente. Per modificare questo file, tuttavia, sarebbero richiesti i privilegi di amministratore.


1

'Gbnome Terminal' non emula esattamente 'xterm' ..

da: Wikipedia >> Terminale GNOME

Il Terminale GNOME emula l'emulatore del terminale xterm e fornisce alcune delle stesse funzionalità.


Un trattato sul problema e sulle soluzioni è disponibile qui:

Backspace Linux / Elimina mini-HOWTO

Ogni utente Linux è stato prima o poi intrappolato in una situazione in cui sembrava impossibile lavorare con i tasti Backspace e Delete sulla console e su X. Questo documento spiega perché ciò accade e suggerisce soluzioni. Le nozioni qui fornite sono essenzialmente indipendenti dalla distribuzione: a causa del contenuto molto diverso dei file di configurazione del sistema in ciascuna distribuzione, cercherò di fornire al lettore abbastanza conoscenza per elaborare le proprie correzioni, se necessario.

Presumo che il tasto Backspace debba tornare indietro di un carattere e quindi cancellare il carattere sotto il cursore. D'altra parte, il tasto Elimina dovrebbe eliminare il carattere sotto il cursore, senza spostarlo. Se pensi che la funzione dei due tasti debba essere scambiata, nonostante il fatto che la maggior parte delle tastiere sia dotata di una freccia che punta a sinistra (←) sul tasto Backspace, questo documento non ti darà soluzioni immediate, ma sicuramente tu può trovare utili le spiegazioni fornite qui.

La soluzione più semplice fornita (che può funzionare qui) è usare: bash $ export TERM = gnome


1

Come utente root, modifica il file / etc / passwd per il tuo utente e passa da / bin / sh a / bin / bash

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

Questo ha funzionato per me.


1

Ho provato tutte le note di cui sopra ( questo link ) senza successo. Potresti voler controllare che vim sia installato.

Di solito uso vi non vim. Quindi ho installato vim.

$ sudo apt-get install vim

Successivamente, le pennellate della tastiera hanno iniziato a funzionare correttamente quando ho eseguito vi. Osservando l'output di quanto segue, sembra che vi sia stato creato un alias da vim dopo l'installazione:

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

0

Questo è un problema di compatibilità con la tastiera, ovvero come viene interpretato nel sistema host. Potrebbe essere necessario utilizzare j o h per spostarsi nell'editor vi in ​​modalità comando. Le frecce non funzioneranno.

Controlla le preferenze del profilo-> compatibilità nel sistema host per quello specifico utente.


0

Ok, so che questa non è una "soluzione" per dire, e potrebbe non aiutare molti di voi , ma speriamo che aiuti almeno 1 di voi . Ha risolto il mio problema.

Il mio bambino di sei mesi mi batteva sulla tastiera e i miei tasti freccia smettevano di funzionare sulla mia sessione di stucco in una scatola Debian. Hanno funzionato ovunque (tutti gli altri programmi al di fuori dello stucco). Dopo Googleing e persino l'atterraggio qui (avrei chiuso questa scheda, non l'ha risolto per me). Ho provato qualcosa. Ho aperto una nuova sessione SSH nella stessa casella e i tasti freccia hanno funzionato. Ho partecipato alla mia sessione sullo schermo e non hanno funzionato. Quindi è appena successo qualcosa legato alla sessione dello schermo corrente disabilitando i tasti freccia. Sfortunatamente, ero (sono) nel mezzo di un grande progetto, avevo 28 finestre aperte nella mia sessione schermo e non volevo chiudere la sessione, perdendo il mio posto su tutte le 28 finestre.

Così..

Mentre ero sulla bash shell, ho provato tutte le combinazioni che mi sono venute in mente, CTRL + su, giù, sinistra destra, ALT + su, giù, sinistra, destra, MAIUSC + su, giù, sinistra destra, CTRL + ALT + su, giù , sinistra a destra, CTRL + MAIUSC + su, giù, sinistra a destra, ecc. Ancora senza fortuna, ho anche provato il menu di Windows e i tasti dell'app di Windows con su, giù, a sinistra a destra.

Ora le mie frecce funzionano di nuovo! Qualcosa su una delle combinazioni di ciò che è sopra e i tasti freccia lo hanno risolto.


0

Nessuna delle risposte sopra ha risolto il mio identico problema, ovvero non è possibile utilizzare backspace o chiavi simili dopo aver inviato a Ubuntu un telecomando da un Ubuntu (qui ubuntu-17.10 con ncurses-6.0).

Finisce per essere un problema con terminfo. Fondamentalmente, il mio terminale gnome dice che è un terminale xterm-256color (tramite la variabile TERM, che viene esportato da ssh sul telecomando) ma il telecomando non aveva una configurazione terminfo per xterm-256color.

Effettuare quanto segue risolto il problema:

$ 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, senza alcuna opzione, produce un elenco di sorgenti per il terminale nella variabile d'ambiente $ TERM. Quindi è equivalente a infocmp -I $ TERM.

Quindi la fonte risultante viene compilata tramite tic.

Infine, installa la configurazione terminfo corrispondente nella posizione remota. Quindi, la prossima volta che mi collegherò a $ remote tramite $ host, saprà del mio terminale.


Cosa fa il tuo blocco di codice? creare un termine config in qualche modo? Sarebbe bello avere qualche spiegazione, eseguire il codice misterioso non è la migliore idea, anche le loro pagine man non sono molto chiare sull'effetto predefinito di infocmp o su come questo sia utile
Xen2050,

@ Xen2050: ho aggiunto una spiegazione per ciascun comando. infocmp senza alcuna opzione equivale a infocmp -I $ TERM. Questo è descritto nella pagina man ma in due parti: "Se non viene specificata alcuna opzione e vengono specificati zero o un nome, verrà presunta l'opzione -I. [...] Le opzioni -I, -L e -C produrrà un elenco di sorgenti per ciascun terminale chiamato. -Io uso i nomi terminfo Se non viene dato alcun nome, la variabile d'ambiente TERM verrà usata per il nome del terminale. "
user1448926
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.