Tenho certeza de que bash
não pode fazer isso. Mas em zsh
foo() {
local -a compcontext
compcontext=( ${(f)"$(</tmp/names)"} )
vared -c -p 'Enter in user: ' user
}
Gerará uma lista de correspondências de um arquivo com um único nome em cada linha.
Ou, se você quiser completar palavras para ler e não a entrada que lê; na festança
complete -W "$(</tmp/names)" read
vai conseguir isso.