Tente:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(ls /something/)" -- $cur) )
}
complete -F _codeComplete hi
Você precisa especificar a opção -W
em compgen
e também citar o comando que produz a lista de palavras.
Mais informações sobre como escrever funções de conclusão neste blog: Escrevendo suas próprias Função de conclusão do bash