
Hay un servidor en mi trabajo que usa csh como shell predeterminado. Prefiero bash, así que cada vez que inicio sesión, comienzo bash
.
Pero por alguna razón, el botón de retroceso elimina palabras completas en lugar de simplemente eliminar caracteres. ¿Porqué es eso? ¿Cómo cambio esto y hago que Bksp borre carácter por carácter?
Para su información, Shift+Bksp elimina carácter por carácter. Si es posible, me gustaría que Shift+Bksp elimine palabra por palabra. Sólo si es posible.
Gracias
PD: Por favor, no me digas que mantenga presionada la tecla Mayús; Es francamente molesto.
Respuesta1
Algunos terminales envían ^h
(carácter número 8) la BackSpaceclave y otros envían ^?
(carácter número 127). Se pueden configurar muchos emuladores de terminal y la mayoría de los programas se pueden configurar para saber qué clave esperar. Obviamente las dos partes deben estar de acuerdo.
Stty es una forma en que las aplicaciones pueden consultar la configuración del terminal. erase = ^?
significa que el archivo de descripción de su terminal en el servidor afirma que cuando su terminal envía ^?
, significa "borrar el carácter anterior". werase = ^?
significa que ^?
significa “borrar la palabra anterior”. Hay una contradicción entre estos dos escenarios.
Cuando inicia sesión a través de ssh, el cliente ssh envía un nombre para la terminal, que se coloca en la TERM
variable de entorno. Luego, los programas en el servidor buscan descripciones del terminal en una base de datos (llamada termcap o terminfo). Si estas descripciones no funcionan, o si un archivo de configuración en algún lugar (como /etc/profile
o ~/.login
o ~/.bashrc
) anula las descripciones con datos incorrectos, es posible que haya una discrepancia. Por ejemplo, una posible fuente de su problema es si algún archivo de inicialización contiene el comando stty werase '^?'
(lo que obliga ^?
a significar una palabra borrar) mientras su terminal solicita ^?
la tecla de retroceso.
Lo ideal sería solucionar el conflicto, ya que muchos programas leerán esta información.
En Putty, puedes configurar cuál de ^?
o ^h
la BackSpaceclave envía. Verifique el valor de esta configuración. Quizás la forma más fácil de solucionar su problema sea hacer que Putty envíe ^h
for BackSpacey asegurarse de que el servidor use esa configuración ( stty erase '^h'
, al ingresarlo ~/.bashrc
, lo forzará).