inputrc文件导致的终端粘贴异常

问题描述:
我在 .bashrc 文件设置了 export INPUTRC=~/.config/.inputrc ,结果导致了我向终端粘贴时,终端显示异常

原因分析:
经过排查,发现只有在我粘贴带中文字符的内容时,才会发生异常行为。而且,如果注释掉 INPUTRC 变量,即使粘贴带有中文字符也是正常的。所以我怀疑是我设置的 INPUTRC 变量指示的文件覆盖了原有的全局设置。经查阅相关文档,发现确实该变量覆盖了 /etc/inputrc 文件中的设置。

解决:
readline文档表示,如果存在 ~/.inputrc 文件,或者 INPUTRC 变量,那么 /etc/inputrc 文件中的内容将被覆盖。所以我这里直接执行 cat /etc/inputrc >> ~/.config/inputrc 将 /etc/inputrc 文件中的内容追加到 INPUTRC 指示的文件中即可。


或者更好的方式是使用 bind 命令,在 ~/.bashrc 文件中设置 bind -f ~/.config/.inputrc 不仅 ~/.config/.inputrc 文件中的设置会生效,而且也不会覆盖 /etc/inputrc 文件中的设置。


更进一步,我最终定位到粘贴中文字符异常主要是以下变量的值未设置,而 /etc/inputrc 文件中对这些变量进行了设定,INPUTRC 变量指定的文件覆盖了此文件中的设置,所以这些变量的值失效了。

set meta-flag on # 允许从终端输入中文,否则的话终端会过滤掉每个字节的最高位;
set input-meta on # 允许向终端直接输入中文
set convert-meta off # 设置不将中文字符转化为转义序列,因为中文是两个字节表示的,第一字节的最高位是1开头的,可以能同于某个转义字符;
set output-meta on # 允许向终端直接输出中文

参考文献:
/etc/inputrc 详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值