Bash 4.2 não completa nomes de diretórios

4

Eu tenho um problema com bash conclusão após uma atualização do sistema.

$ mkdir abcde    
$ cd abc[TAB] 

não faz nada, enquanto nas versões bash mais antigas ela se expande para $ cd abcde .

Alguns fóruns antigos em bash sugerem a configuração da opção direxpand , mas aparentemente está faltando no bash 4.2 :

$ shopt -s direxpand  
bash: shopt: direxpand: invalid shell option name  

(Eu atualizei do Fedora 11 para o Fedora 17 com seu bash-4.2.37 )

Existe alguma maneira de contornar isso?

    
por Maxim 18.01.2013 / 09:15

2 respostas

2

o bash usa a biblioteca readline para entrada, a aba deve mapear para a operação readlinecomplete (isso é diferente do comando bash do mesmo nome, embora relacionado na operação).

Existem várias causas possíveis, as coisas a verificar são:

  • teste para ver se alguma das outras conclusões funciona: meta-? (provavelmente alt + deslocamento + ? ') isto deve listar todas as correspondências (similar a pressionar tab duas vezes)
  • verifique se ctrl-i funciona (maneira alternativa de entrar na guia)
  • verifique sua variável TERM e a saída de stty (não deve conter nenhuma referência à guia)
  • verifique quais recursos de conclusão do bash podem ser definidos, execute complete sem argumentos para listá-los
  • seu readline pode estar confuso, verifique /etc/inputrc e seu ~/.inputrc (se houver) e a saída de bind -q complete . Ele deve conter pelo menos " \C-i " significando ctrl - i (tab)
  • verifique se alguma coisa quebrou a seqüência de teclas readline da guia: bind -S (não deve conter " \C-i ")
  • Se você executar bind '"\C-i": complete' , ele começará a funcionar como esperado?
por 24.01.2013 / 12:19
1

Aparentemente o direxpand shopt -s trabalha com tudo exceto built-in "cd". Então eu adicionei "alias xy = cd" ao meu perfil, e xy funciona como cd, exceto direxpand funciona usando TAB. (Quem teria pensei que seria tão simples?)

    
por 02.06.2016 / 21:52