A conclusão programável do Bash funciona analisando a linha de comando e descobrindo o que está sendo concluído:
- Alguns contextos são tratados especialmente, por exemplo, a primeira palavra em um comando é concluída como um nome de comando, o que segue a
$
é concluída como um nome de variável, etc.
- Fora desses contextos, o bash tenta concluir o argumento de um comando e as configurações para o comando ou a falha (que geralmente é o caso) para o nome da base do comando são aplicadas.
Por exemplo, depois , o bash conclui os nomes dos comandos que começam com . Depois , o bash completa os nomes de variáveis que começam com . Depois , o bash aplica as regras de conclusão para o comando . As regras de conclusão podem especificar uma categoria (usuário, variável, arquivos etc.), um padrão curinga para nomes de arquivo ou uma função ou trecho de código a ser executado.sqllTab
sqll
sqlldr $aTab
a
sqlldr Tab
sqlldr
As regras de conclusão são definidas pelo complete
builtin. O Bash não controla quando o complete
builtin foi chamado ou em qual script (se houver) ele estava. A maioria das distribuições envia o pacote bash-complete , que fornece uma série de regras para comandos comuns. Isso assume a forma de uma série de arquivos de script que contêm chamadas para complete
, com um script que deve ser lido .bashrc
(ou /etc/bash.bashrc
se implementado) para carregar todos esses scripts: normalmente . /etc/bash_completion
é necessário para ativar a conclusão programável e carregar os scripts disponíveis.
O pacote padrão não inclui suporte para sqlldr
. Se você tiver esse suporte, ele deve ser de uma fonte diferente. Essa fonte pode ter descartado um arquivo em um diretório como /etc/bash_completion.d
ou pode ter fornecido instruções para incluir algum código no seu .bashrc
. Você pode usar complete -p sqlldr
para ver as regras atuais para sqlldr
; como mencionado anteriormente, isso não informará de onde essas regras foram carregadas.
O tcsh, o zsh e o fish têm mecanismos semelhantes (todos se inspiraram no tcsh), mas com diferentes componentes, sintaxes e recursos.
/etc/bash_completion.d
. Veja também/etc/bash_completion
e dê uma olhada na saída deset
quanto seu ambiente cresceu.