O problema é que select
está tentando ler de stdin, que é redirecionado para o here-doc. Como não há resposta para o prompt, ele recebe um erro.
A solução é redirecionar a entrada de volta para o terminal dentro do here-doc.
sudo -s <<'EOF'
select x in a b c; do
echo "Selected $x"
break
done </dev/tty
EOF
Além disso, você precisa colocar aspas em torno de EOF
para evitar a expansão de variáveis no aqui-doc. Caso contrário, ele expande $x
no shell original, não no subshell que obtém o valor de select
.