「nosort」を使用しても「complete」がオプションをソートするのはなぜですか?

「nosort」を使用しても「complete」がオプションをソートするのはなぜですか?

得られないこの回答Bash 4.4.20(Ubuntu 18.04のデフォルトシェル)での作業:

$ 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には修正がないようです。

おすすめ記事