为什么粘贴 Bash 函数会导致出现 "Display all possibilities" 和一长串?

Why does pasting a Bash function cause "Display all possibilities" and a long list to appear?

内部字段分隔符(缩写为 IFS)指的是一个变量,它定义了用于将模式分隔为某些操作的标记的一个或多个字符。 IFS 通常包括 space、制表符和换行符。

显示我当前的 IFS:

echo -n "$IFS" |xxd
00000000: 2009 0a 

现在我写了一个简单的bash脚本。

全部代码位于我的dropbox.

当我将它粘贴到控制台时:

第2行开始到第5行为\t;如果我用空白替换它,它可以被复制到控制台,什么也不会发生。

因此我们可以得出结论,\t 导致了此操作。我想知道,如果变量 </code> 从未被分配过,那么代码 运行 粘贴到控制台时如何?</p> <p>我已经多次阅读 <code>IFS 概念,但找不到解释。

这是因为当您粘贴某些内容时,行为就像您按字面输入一样;因为您使用制表符进行缩进,所以粘贴会触发自动完成。

有一个 readline setting 可以避免:

set enable-bracketed-paste on

这会进入您的 .inputrc

来自手册:

When set to On, Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. The default is off.