我无法得到这个答案在 Bash 4.4.20 中工作(Ubuntu 18.04 中的默认 shell):
$ complete -o nosort -W '--color=auto --color=always --color=never' mycommand
$ mycommand --<Tab>
--color=always --color=auto --color=never
COMPREPLY
在函数中设置会得到相同的结果:
_mycommand() {
COMPREPLY=($(compgen -W '--color=auto --color=always --color=never' -- "${COMP_WORDS[1]}"))
}
complete -o nosort -F _mycommand mycommand
man bash
提到了这个nosort
选项,所以应该支持它。是什么赋予了?
答案1
看起来这是由completion-ignore-case
:
$ bind "set completion-ignore-case off"
$ bind -V | grep ignore-case
completion-ignore-case is set to `off'
$ complete -o nosort -W '--color=auto --color=always --color=never' mycommand
$ mycommand --<Tab>
--color=auto --color=always --color=never
看起来 Bash 4.4.20 中没有该修复。