为什么Bash可以';当制表符完成变量名时,是否忽略大小写?
当我想输入命令为什么Bash可以';当制表符完成变量名时,是否忽略大小写?,bash,readline,tab-completion,Bash,Readline,Tab Completion,当我想输入命令echo$bash\ucode>,然后按Tab键时,自动完成无法发生。 但当我输入命令echo$BASH\ucode>,然后按下Tab,完成列表将如下输出: $BASH_ALIASES $BASH_COMMAND $BASH_SOURCE $BASH_ARGC $BASH_COMPLETION_COMPAT_DIR $BASH_SUBSHELL $BASH_ARGV
echo$bash\ucode>,然后按Tab
键时,自动完成无法发生。
但当我输入命令echo$BASH\ucode>,然后按下Tab
,完成列表将如下输出:
$BASH_ALIASES $BASH_COMMAND $BASH_SOURCE
$BASH_ARGC $BASH_COMPLETION_COMPAT_DIR $BASH_SUBSHELL
$BASH_ARGV $BASH_LINENO $BASH_VERSINFO
$BASH_CMDS $BASH_REMATCH $BASH_VERSION
我的.inputrc
文件包含readline
ignorecase选项,设置完成忽略大小写,文件名不区分大小写。
因此,我希望变量名
选项卡完成可以忽略变量大小写 存在不区分大小写的文件系统,在这样的系统上,文件名完成不区分大小写是有意义的。在理想情况下,bash可以判断文件路径的组件是否不区分大小写,但实际上没有提供此信息的标准接口,因此bash转而允许您显式配置不区分大小写的文件名完成:(引自,emphasis添加)
完成忽略案例
如果在
上设置为,readline将以不区分大小写的方式执行文件名匹配和完成。默认值为“关闭”
类似地,您可以将glob扩展和/或大小写模式配置为不区分大小写
但是不能使bash变量不区分大小写$bash
和$bash
是不同的变量。与bash函数名、bash内置名和bash关键字类似。Bash可以对所有这些文件进行制表符完成,但不管文件名大小写敏感的配置如何,制表符完成都是区分大小写的
虽然这似乎是一个合理的理由,但事实证明bash选项卡完成总是区分大小写的,除了可以配置为不区分大小写的文件名(包括映射到文件名的目录和bash命令)之外。即使是通常不区分大小写的事情,如信号名和主机名,也只能区分大小写完成