Retroceso, Tab, Supr y las teclas de flecha no funcionan en la terminal (usando ssh)


44

Cuando ingreso a otra máquina Ubuntu con mi cuenta (con permisos sudo), mi tecla de retroceso genera algunos símbolos incómodos al presionar. Además, las teclas Tab, Supr y Flechas no funcionan.

Por otro lado, también tengo otra cuenta en la misma máquina y cuando reviso esta cuenta, su terminal funciona perfectamente bien. No pude entender por qué está sucediendo esto.


Tengo el mismo problema: mi host es Win7-64 y mis sistemas invitados remotos son ambos Ubuntu Server 10.04. En un servidor, las claves funcionan, en otro, no.
Mateng

Información adicional: entro en las máquinas remotas con Putty / Kitty
Mateng

¿Puedes intentar ssh a través de un programa diferente o crear un nuevo perfil para el sistema de destino?
belacqua

También enfrenté el problema con Cygwin (en la victoria 7)
gopi1410

¿Qué se devuelve al escribir echo "$ TERM" , cuando esto ocurre?
david6

Respuestas:


32

EDITAR: Referencia: la respuesta de Mateng

Mateng es cercano en lo que creo que probablemente estés ejecutando Bourne Shell. Pero no deberías estar editando tu /etc/passwdarchivo directamente. Intente usar el chshcomando en su lugar:

chsh -s /bin/bash

La bandera -s hará que el nuevo shell (Bash en este caso) sea su shell de inicio de sesión en adelante.


Parece legitimo. Si gopi1410 está de acuerdo, las 50 repeticiones son tuyas.
Mateng

@Mateng: de acuerdo, y se agregó un enlace a su respuesta para completarlo
gopi1410

1
Ejecutar como root:sudo chsh -s /bin/bash
KrisWebDev

1
@ Trabajó para mí más de 3 años después. Muchas gracias! ¡Eres increíble!
goncalotomas

17

Los siguientes cambios resolvieron el problema para mí. Primero, verifiqué qué shell se estaba ejecutando:

$ echo $0

que regresó:

/bin/sh

Como leí en esta publicación en Ubuntuforums , cambiar el shell para /bin/bashtraer la solución. Así que edité mi configuración de usuario en /etc/passwd:

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

Me desconecté y luego volví a iniciar sesión. Extrañamente, tuve que cambiar el shell manualmente (tal vez algo de caché estaba activo) ingresando esto:

/bin/bash

Voila!
[El problema surgió debido a una actualización de distribución.]


13

cuando entras por primera vez, prueba estos dos comandos

stty sane
export TERM=linux

Tengo que hacer esto en algunas máquinas en las que entro para solucionar exactamente este problema


1
Lo intenté, pero el problema persiste
Mateng

1
intentaste el término como VT100 en lugar de Linux? ¿Qué pasa con stty erase <backspace>(<retroceso> estar donde realmente
presionó

Con (flecha hacia arriba): $ stty erase '^[[A' stty: invalid integer argument '\033[A'. Con [Retroceso]: $ stty erase '^?'funciona. Con [Tab]: $ stty erase ' ' no hay error, pero luego [Retroceso] vuelve a tener un comportamiento extraño.
Mateng

Lo intenté export TERM=VT100, pero fue en vano.
Mateng

1
stty tab0no ayuda. Supongo que es necesario algún tipo de reconfiguración general de xterm. ¿O el mapa de teclas es simplemente incorrecto?
Mateng

5

Una de las formas más fáciles de solucionar este problema es escribir / bin / bash en el indicador de la interfaz de línea de comandos:

$ / bin / bash

El comando mencionado anteriormente ejecutará Bourne Again Shell encima del shell existente como un subproceso. Esto presenta la desventaja de utilizar más recursos, pero no es necesario editar nada y no se requieren permisos especiales. Por ejemplo, en versiones recientes de Kubuntu, se iniciará una sesión / bin / bash encima de la interfaz de shell de línea de comando predeterminada / bin / dash.

Sin embargo, para mantener los cambios, una posibilidad es editar el archivo / etc / passwd y agregar / editar / reemplazar el shell predeterminado a / bin / bash después del último carácter ':' en la línea correspondiente al usuario. Sin embargo, para editar este archivo, se requerirían privilegios de administrador.


1

'Gbnome Terminal' no emula exactamente 'xterm' ..

de: Wikipedia >> Terminal GNOME

GNOME Terminal emula el emulador de terminal xterm y proporciona algunas de las mismas características.


Puede encontrar un tratado sobre el problema y las soluciones aquí:

Retroceso de Linux / Eliminar mini-CÓMO

Tarde o temprano, todos los usuarios de Linux quedaron atrapados en una situación en la que parecía imposible tener teclas de Retroceso y Eliminar en la consola y en X. Este artículo explica por qué sucede esto y sugiere soluciones. Las nociones dadas aquí son esencialmente independientes de la distribución: debido al contenido muy diferente de los archivos de configuración del sistema en cada distribución, intentaré darle al lector suficiente conocimiento para pensar sus propias soluciones, si es necesario.

Supongo que la tecla Retroceso debería retroceder un carácter y luego borrar el carácter debajo del cursor. Por otro lado, la tecla Eliminar debería eliminar el carácter debajo del cursor, sin moverlo. Si cree que la función de las dos teclas debe intercambiarse, a pesar del hecho de que la mayoría de los teclados tienen una flecha que apunta hacia la izquierda (←) en la tecla Retroceso, entonces este documento no le dará soluciones inmediatas, pero ciertamente usted Las explicaciones dadas aquí pueden ser útiles.

La solución más simple (que puede funcionar aquí) es usar: bash $ export TERM = gnome


1

Como usuario raíz, edite el archivo / etc / passwd para su usuario y cambie de / bin / sh a / bin / bash

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

Esto funcionó para mí.


1

Intenté todas las notas más de ( este enlace ) sin éxito. Es posible que desee verificar que vim esté instalado.

Usualmente uso vi, no vim. Entonces instalé vim.

$ sudo apt-get install vim

Después de eso, los golpes del teclado comenzaron a funcionar correctamente cuando ejecuté vi. Mirando el resultado de lo siguiente, parece que vi se convirtió en un alias para vim después de la instalación:

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

0

Este es un problema de compatibilidad con el teclado, es decir, cómo se interpreta en el sistema host. Puede que tenga que usar j o h para moverse en el editor vi en el modo de comando. Las flechas no funcionarán.

Verifique las preferencias de perfil-> compatibilidad en el sistema host para ese usuario específico.


0

Bien, sé que esto no es una "solución" por decir, y puede que no ayude a muchos de ustedes , pero espero que ayude al menos a 1 de ustedes . Se solucionó mi problema.

Mi hijo de seis meses golpeó mi teclado y mis teclas de flecha dejaron de funcionar en mi sesión de masilla en una caja de Debian. Trabajaron en todas partes (todos los demás programas fuera de la masilla). Después de buscar en Google e incluso aterrizar aquí (iba a cerrar esta pestaña, no me resolvió). Intenté algo Abrí una nueva sesión ssh en el mismo cuadro, y mis teclas de flecha funcionaron. Me uní a mi sesión de pantalla y no funcionaron. Entonces, algo sucedió vinculado a la sesión de pantalla actual deshabilitando las teclas de flecha. Desafortunadamente, estaba (estoy) en medio de un gran proyecto, tenía 28 ventanas abiertas en mi sesión de pantalla y no quería cerrar la sesión, perdiendo mi lugar en las 28 ventanas.

Asi que..

Mientras estaba en el bash shell, probé todas las combinaciones que se me ocurrieron, de CTRL + arriba, abajo, izquierda derecha, ALT + arriba, abajo, izquierda, derecha, SHIFT + arriba, abajo, izquierda derecha, CTRL + ALT + arriba, abajo , izquierda derecha, CTRL + MAYÚS + arriba, abajo, izquierda derecha, etc. Todavía sin suerte, también probé el menú de Windows y las teclas de la aplicación de Windows con arriba, abajo, izquierda derecha.

¡Ahora mis flechas funcionan de nuevo! Algo sobre una de las combinaciones de lo que está arriba y las teclas de flecha lo arreglaron.


0

Ninguna de las respuestas anteriores solucionó mi problema idéntico, es decir, no puedo usar la tecla de retroceso o teclas similares después de enviar un control remoto desde un Ubuntu (aquí ubuntu-17.10 con ncurses-6.0).

Termina siendo un problema con terminfo. Básicamente, mi terminal gnome dice que es un terminal xterm-256color (a través de la variable TERM, que se exporta mediante ssh al control remoto) pero el control remoto no tenía una configuración de terminal para xterm-256color.

Hacer lo siguiente solucionó el 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, sin ninguna opción, produce un listado de origen para el terminal en la variable de entorno $ TERM. Por lo tanto, es equivalente a infocmp -I $ TERM.

Luego, la fuente resultante se compila a través de tic.

Finalmente, instale la configuración terminfo correspondiente en la ubicación remota. Entonces, la próxima vez que me conecte a $ remote a través de $ host, sabrá sobre mi terminal.


¿Qué hace tu bloque de código? crear un término config de alguna manera? Sería bueno tener alguna explicación, ejecutar código misterioso no es la mejor idea, incluso sus páginas de manual no son muy claras sobre el efecto predeterminado de infocmp, o cómo esto es útil
Xen2050

@ Xen2050: agregué una explicación para cada comando. infocmp sin ninguna opción es equivalente a infocmp -I $ TERM. Esto se describe en la página del manual pero en dos partes: "Si no se especifican opciones y se especifican cero o un término, se asumirá la opción -I. [...] Las opciones -I, -L y -C producirá una lista de origen para cada terminal llamado. -Utilizo los nombres terminfo Si no se dan nombres de términos, la variable de entorno TERM se usará para el nombre del terminal ".
user1448926
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.