- Alguns contextos são tratados especialmente, por ex. a primeira palavra em um comando é concluída como um nome de comando, o que segue um
$
é preenchido 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 falha (que geralmente é o caso) do nome base do comando são aplicadas.
Por exemplo, depois de sqllTab
, bash conclui os nomes dos comandos que começam com sqll
. Após sqlldr $aTab
, o bash completa os nomes das variáveis que começam com a
. Após sqlldr Tab
, o bash aplica as regras de conclusão para o comando sqlldr
. As regras de conclusão podem especificar uma categoria (usuário, variável, arquivos etc.), um padrão de caractere curinga para nomes de arquivos ou uma função ou fragmento de código a ser executado.
As regras de preenchimento são definidas pelo complete
embutido. Bash não controla quando o complete
builtin foi chamado ou em qual script (se algum) ele estava. A maioria das distribuições envia o pacote bash-completion , 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 de .bashrc
(ou /etc/bash.bashrc
se implementado) para carregar todos esses scripts: geralmente . /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 vir de uma fonte diferente. Essa fonte pode ter descartado um arquivo em um diretório como /etc/bash_completion.d
ou pode vir com instruções para incluir algum código em .bashrc
. Você pode usar complete -p sqlldr
para ver as regras atuais para sqlldr
; como mencionado anteriormente, isso não lhe dirá onde essas regras foram carregadas.
O tcsh, o zsh e o fish possuem mecanismos parecidos (todos se inspiraram no tcsh), mas diferentes recursos, sintaxes e capacidades.