O preenchimento automático sempre sugere arquivos no diretório atual

O preenchimento automático sempre sugere arquivos no diretório atual

Ao usar o preenchimento automático para qualquer comando que use a função de conclusão integrada _longopt(por exemplo mkdir), o shell sempre sugere o conteúdo do diretório atual além das sugestões desejadas.

Por exemplo, se eu digitar

mkdir ~/somedir

e pressione tab duas vezes Bash sugere: (assumindo que o tipo diretório atual contém applications, desktop, etc.)

applications/   desktop/     documents/
...
somedir_a/      somedir_b/

Como restaurar o comportamento normal e fazer com que o bash apenas sugira somedir_ae somedir_bnão os outros arquivos/diretórios?

Versão Bash: GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)
Conclusão do Bash:2.8

Responder1

Esse comportamento pode ser causado pela opção shell nullglob, que pode estar, por exemplo, ativada no seu arquivo .bashrc.

O motivo é que a _longoptfunção possui um bug em sua definição, o que faz com que esse comportamento esteja _longoptativado.

A solução é desabilitar esta opção ou substituir _longoptvocê mesmo a função.

Um efeito semelhante também é descrito aqui:Por que nullglob afeta o preenchimento da guia?, embora essa pergunta seja bastante difícil de encontrar, a menos que você saiba que esta opção é a culpada.

EDITAR: Como apontado por@fra-san, isto é umproblema conhecidocom bash-completion. A correção chegou na versão 2.9, mas essa versão ainda não foi lançada no Fedora (e talvez em outros sistemas também).

informação relacionada