Isso funciona para mim:
_foo()
{
local cur
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
opts=""
while read line
do
opts+=" $line"
done < ~/.ssh_complete
opts+=" "
opts+=$(find . ! -name . -prune -type f)
case "$cur" in
*)
COMPREPLY=( $( compgen -W '$opts' -- $cur ) );;
esac
return 0
}
complete -F _foo scp