El comando se ajusta alrededor de la misma línea después de 80 caracteres

8

Tengo un problema molesto con minicom conectado a una consola serie a una máquina Yocto Linux.

El comando que ingreso se ajusta en la misma línea después del 80 ° carácter. Esto se vuelve muy inconveniente para trabajar. Todo lo que ingresé al comienzo de la línea se sobrescribe con los últimos caracteres de esa línea.

Una conexión SSH a la misma máquina funciona bien. Después de los 80 caracteres ssh pasa a la siguiente línea.

Esta es la configuración stty:

stty -a
speed 115200 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

La opción -w de minicom no tiene efecto. Sigue siendo el mismo comportamiento

minicom -w

El resizecomando no está disponible en esa máquina. ¿A qué paquete pertenece? Quizás pueda instalarlo.

¿Cómo puedo arreglar ese comportamiento?

Oliver G.
fuente
¿Cuál es la TERMvariable de entorno cuando se conecta a través de minicom?
thrig
echo $ TERM xterm
Oliver G.
mostrar salida de stty -aejecutado dentrominicom
Arkadiusz Drabczyk
¿Correr minicomcon -wayuda?
Arkadiusz Drabczyk
Si uso en puttylugar de minicomun programa de terminal en serie y habilito la configuración de terminal "LF implícito en cada CR", el comportamiento desaparecerá.
Oliver G.

Respuestas:

4

Cuando está conectado a través de una línea en serie, el sistema no puede negociar el tamaño de la ventana con el terminal (NAWS - Negociar sobre el tamaño de la ventana es RFC 1073 ). En ese caso, puede obtener un valor predeterminado del sistema para el tamaño, o incluso solo ceros. Cualquiera de los dos confundiría al editor de línea del shell, que necesita conocer el ancho real del terminal para trabajar con su función envolvente.

bash se confunde, pensando que se ha cerrado debido a la función de ajuste automático del terminal y se mueve al comienzo de la línea actual (incorrecta) como parte de la edición / visualización de la línea.

Como solución alternativa, la mayoría de los terminales (incluido el minicom, vea la fuente ) que usaría con una interfaz en serie pueden responder a la secuencia de escape del informe de posición del cursor utilizada resizepara encontrar el tamaño de la ventana y, como efecto secundario, establecer la idea del sistema de qué tan grande es la ventana de su terminal.

Thomas Dickey
fuente
1
Todavía me gustaría saber por qué se envuelve en la misma línea, en lugar de en la siguiente línea.
dirkt
3

Esto funcionó para mí. El shell de destino debe configurarse para verificar el tamaño de la ventana y el tamaño correcto de la interfaz gráfica de usuario de la consola. Después de conectarse vía serial con masilla o minicom:

shopt -s checkwinsize
resize
Mark Inderhees
fuente
Esto parece haber funcionado para mí, pero no estoy claro cómo se hizo o cómo aplicarlo como regla general.
TheMeaningfulEngineer
Agregue esto a su .bashrc en el destino: "shopt -s checkwinsize" y "eval` resize`"
Mark Inderhees