Fedora 34 bash终端粘贴多命令行为变更 如何恢复F32旧逻辑
问题根因
Fedora 34 开始默认为基于 readline 的交互程序(包括 bash、mysql 等)开启了*带括号粘贴(bracketed paste)*功能,该功能设计初衷是避免粘贴内容中的特殊字符、换行被意外解析执行,但也改变了批量粘贴的逻辑:开启该功能后,粘贴的所有内容会被终端用特殊转义序列包裹,当执行到启动交互式子进程的命令时,后续未执行的粘贴内容不会被写入子进程的标准输入队列,只会缓存在终端侧,等子进程退出后才会送回父 shell 执行,最终出现执行中断、后续命令执行位置错误的问题。
解决方案
临时生效(仅当前shell窗口有效)
在批量粘贴命令前,先在当前终端执行以下命令关闭带括号粘贴功能即可:
bind 'set enable-bracketed-paste off'
永久生效(所有用户会话生效)
编辑当前用户的 ~/.inputrc 配置文件(如果文件不存在直接新建),添加如下配置:
set enable-bracketed-paste off
保存后重新登录终端,即可恢复 Fedora 32 版本的批量粘贴执行行为。配置完成后,粘贴给出的复现代码即可自动完成全流程执行,不会卡在bash命令处。
内容的提问来源于stack exchange,提问作者John W
相关产品推荐
相关产品推荐

