Você pode mostrar o código de conclusão de um comando usando o complete
builtin. Aqui está um exemplo:
$ complete -p ls
complete -F _longopt ls
Se você estiver interessado em saber o que o _longopt
faz, use o type
builtin:
$ type -a _longopt
_longopt is a function
_longopt ()
{
local cur prev words cword split;
_init_completion -s || return;
case "${prev,,}" in
--help | --usage | --version)
----- snip ------
Em caso de funções, a solução apontada por HairOfTheDog aqui :
# Turn on extended shell debugging
shopt -s extdebug
# Dump the function's name, line number and fully qualified source file
declare -F _longopt
# Turn off extended shell debugging
shopt -u extdebug
O Bash não possui uma maneira de determinar onde as variáveis ou funções de ambiente foram definidas no processo de inicialização.
Caso contrário, você pode obter está executando o bash com -x
.
bash -x -i -l
Isso executará um shell de login interativo no modo de depuração, que mostrará todas as linhas executadas. Se você encontrar a definição da função na saída, poderá encontrar o último comando source
ou .
que veio antes dela.