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_a
e somedir_b
nã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 _longopt
função possui um bug em sua definição, o que faz com que esse comportamento esteja _longopt
ativado.
A solução é desabilitar esta opção ou substituir _longopt
você 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).