我已经使用 CentOS 6、7 和 8 版本很长时间了。最后,我开始使用 CentOS 9 Stream 版本。无论是 GNOME 桌面版还是服务器版(黑屏),当我从 Windows 环境使用 putty 连接到这些设备时,我注意到了变化。
为了通过 SSH 向服务器发送命令,而不是手动输入,我将之前准备好的配置命令保存在文本文件中,有时保存在 excel 单元格中。当我要从文本文件中粘贴命令时,我会复制多行进行“输入”处理。同样,当您复制和粘贴 excel 单元格时,它会在末尾检测到多一行并传递“输入”。这正是我想要的方法。
但在 CentOS 9 Stream 中我无法做到这一点。无论是从文本文件中输入一行或多行,还是从 excel 中复制和粘贴命令,“enter” 永远不会自动通过,我必须从键盘上按下它。
CentOS 9 中的此更新是 shell 更新吗?如何在 CentOS 9 中更改此状态,就像旧版 CentOS 6-7-8 中的应用程序一样?
答案1
是的,这是对 shell 的更新bash
。它不再总是逐行处理输入,而是要求终端(本例中为 PuTTY)使用“括号粘贴”模式,并指示何时粘贴文本而不是键入文本。
(它还会影响使用 bash 的“readline”文本输入库的其他程序,例如交互式 Python。)
我推荐的解决方案是...不再粘贴大块的命令,而是将所有内容编写成脚本 - 不再拥有一个巨大的 Excel 表,而是拥有一组 .sh 脚本(或 Ansible 剧本,或......),不再将内容单独粘贴到每个服务器,而是使用 Bash 或 PowerShell 脚本循环遍历它们for x in $hosts
。
可以通过 ~/.inputrc 禁用 shell 中的括号粘贴:
$include /etc/inputrc
set enable-bracketed-paste off
或者通过 ~/.bashrc:
bind 'set enable-bracketed-paste off'
PuTTY 中的终端设置可能也有一个在发送端禁用此功能的选项(即使您不想在 shell 中使用它,它在文本编辑器中也很有用)。