Por que o autocompletion não funciona ao digitar um nome de comando depois de 'source'?

2

source pesquisa PATH por padrão.

Mas, no bash, o preenchimento automático não funciona ao digitar um nome de comando após source .

Em geral, quando o autocompletion é baseado em PATH work e quando não?

Como posso fazer isso funcionar ao digitar o argumento em source ?

Obrigado.

    
por Tim 12.01.2018 / 21:30

1 resposta

4

source (o comando bash builtin) recebe um argumento filename ; a pesquisa PATH é acionada somente se o nome do arquivo especificado não for encontrado. Então, source foo tenta primeiro abrir ./foo e somente quando isso falhar, ele irá procurar por /path/dir/foo . Tente concluir a guia com nomes de arquivos que existem em seu diretório atual ou forneça caminhos para o comando no qual você está interessado. Eles devem ser preenchidos por guias como você espera.

  • A maneira mais fácil de alcançar o que você deseja é reconhecer que a conclusão de tabulação está tentando complete-filename , mas você quer complete-command . Você pode acionar complete-command com o M-! keybind também conhecido como Alt +! . (Consulte a seção READLINE , Completing subsection, em man bash e em documentação on-line do bash para outras funções de conclusão e atalhos de teclado padrão.)

  • A maneira mais difícil seria revisar as funções de conclusão padrão acionadas para o primeiro argumento do source para chamar o complete-filename e o complete-command funções. Veja help complete (em sua linha de comando), a subseção Programmable Completion em man bash e em documentação on-line do bash e o comando complete builtin.

Em geral, a conclusão da tabulação é posicional e chama diferentes funções de conclusão com base em onde você está na linha de comando. Nos sistemas Arch, os pacotes podem instalar um arquivo de conclusão em /usr/share/bash-completion para fornecer conclusões conscientes do contexto para seus executáveis.

    
por 12.01.2018 / 22:14

Tags