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