2025年记一次嵌入式linux的串口console控制台中运行bash时长行回绕导致覆盖行首问题的解决方法

记一次嵌入式linux的串口console控制台中运行bash时长行回绕导致覆盖行首问题的解决方法嵌入式 Linux 使用 bash 的必要性 一直以来嵌入式 ARM linux 的默认 shell 多数是 busybox 自带的 ash 该 shell 可以看做是 bash 的裁剪版本 仅支持 bash 的部分功能 虽然 ash 可以胜任日常嵌入式开发的绝大多数任务 但它缺失的一个功能导致我一直对它抱有不满 这个功能就是 bash 自带的按键绑定

大家好,我是讯享网,很高兴认识大家。

嵌入式Linux使用bash的必要性

一直以来嵌入式ARM linux的默认shell多数是busybox自带的ash,该shell可以看做是bash的裁剪版本,仅支持bash的部分功能。虽然ash可以胜任日常嵌入式开发的绝大多数任务,但它缺失的一个功能导致我一直对它抱有不满,这个功能就是bash自带的按键绑定(bind)功能,以下.bashrc的配置是我在ubuntu开发环境的必备配置,这个配置带来的好处那真的是life change类型的,谁用谁知道!

 # 加快历史命令搜索(键入几个命令开头字母,使用上翻建即可实现快速查找以这些字母开头的所有历史记录!) bind '"\e[A":history-search-backward' bind '"\e[B":history-search-forward' 

讯享网

bash存在的问题

为了能够实现在嵌入式开发板中也使用这个异常好用的特性,很早之前我就开始习惯于在开发板上交叉编译bash并将其设置为默认的shell使用。以前的开发板多数是带网口的,日常开发基本都是telnet/ssh远程登录到开发板终端,这种方式使用bash没有任何问题。

不过最近搞的几个项目的开发板全都没有带网口,导致我不得不在开发时使用串口登录到linux内核的console终端上进行日常开发调试。这么一用就弄了一个奇怪的问题,问题描述如下:
当bash作为console控制台的默认shell时,一条命令如果过长需要回绕时并不会自动换行并且总是会覆盖行首已经存在的字符, 截图如下:
在这里插入图片描述
讯享网
箭头所示位置本应该要换行显示,现在的效果确是没有换行并且覆盖了同一行已经显示出的内容,这个问题恶心我了很久,也查了不少资料,一直都没有解决,只能这么蹩脚勉强着用,后来有一天我的强迫症终于战胜了懒惰症,我开始下定决心要把这个问题解决掉。

  1. /etc/profile中设置并导出一个合理的终端大小:
讯享网export LINES=50 COLUMNS=150 
  1. 设置登录终端的窗口大小和profile导出的大小一致。以xshell为例,在“文件” -> “当前会话属性” -> “终端” 选项卡中设置自动修正当前终端大小和profile中设置的值一致:
    在这里插入图片描述

如果勾选了“连接时重置端子尺寸”则可以实现xshell在连接终端时自动将窗口大小修改到tty配置的大小,不过该方法会导致xshell在连接多个终端时总是切换窗口大小到最后一个连接的终端大小

另外如果不勾选这个自动设置窗口大小的选项,我们也可以选择将窗口大小通过鼠标拖拽的方式修正到和profile配置的大小一致来达到同样的效果!

后记:更加方便合理的方法

有一次在玩韦东山老师提供的rk3399开发板时偶然发现这个板子在启动并登陆到console控制台时总是会输出如下类似的日志:
在这里插入图片描述
凭借我敏锐的直觉,立刻意识到这是在自动导出tty的LINES和COLUMNS到和当前窗口一致的一个操作,经过一段按图索骥的追溯,最终让我找到该输出是一个叫做resize命令的输出,man 手册看一下resize命令:
在这里插入图片描述
很明显这个命令的功能就是重设终端的长宽参数到当前窗口大小,这简直就是为bash的这个问题量身打造的命令啊,那还等什么, 赶紧上马用起来!

于最终这个bash长行回绕的问题可以通过在/etc/profile中添加如下一个华丽的命令操作就可以完美的解决了:

# resize the tty lines and columns same to terminal windows size # this option can fix bash long line warp at same line problam resize 
小讯
上一篇 2025-03-15 14:58
下一篇 2025-03-23 14:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/64934.html