Se você quiser escrever um aqui-doc e não quiser que QUALQUER um documento seja expandido ou qualquer caractere especial seja interpretado, você pode citar o rótulo com aspas simples, assim:
$ cat >file <<'EOF'
echo "$ABC=home_dir"
EOF
No entanto, sua situação descrita em seu exemplo é muito mais complexa, porque você está realmente enviando este conteúdo através de ssh, para um sistema remoto, para ser executado pelo sudo que também está invocando um shell (e assim expandir o conteúdo também). Você vai precisar de mais níveis de cotação para acertar, mas mesmo assim, isso não funcionará, porque o sudo requer um terminal (para que ele possa solicitar uma senha) e você foi redirecionado do stdin. Mesmo usando ssh -t
não ajudará aqui.
Também concordo com Johan. Não está claro que isso é realmente o que você quer; Observe que não é legal atribuir um valor a uma referência de variável de shell, portanto, se esse arquivo que você está tentando criar é supostamente um script de shell, ele não funcionará como você descreveu. Talvez se você voltar um pouco e descrever o que você realmente quer fazer, podemos ajudar mais.