Si desea escribir un documento aquí y no desea que CUALQUIERA del documento se expanda o se interprete cualquier carácter especial, puede citar la etiqueta con comillas simples, como esta:
$ cat >file <<'EOF'
echo "$ABC=home_dir"
EOF
Sin embargo, su situación como se describe en su ejemplo es mucho más compleja, porque realmente está enviando este contenido a través de ssh, a un sistema remoto, para que sea ejecutado por sudo, que también invoca un shell (y ese shell expandirá el contenido también). Necesitará más niveles de citas para hacerlo bien, pero incluso con eso no funcionará porque sudo requiere un terminal (por lo que puede solicitar una contraseña) y ha redirigido desde stdin. Incluso el uso ssh -t
no ayudará aquí.
También estoy de acuerdo con Johan. No está claro que esto sea realmente lo que quieres; tenga en cuenta que no es legal asignar un valor a una referencia de variable de shell, por lo que si se supone que este archivo que está intentando crear es un script de shell, no funcionará como lo ha descrito. Tal vez si retrocede un poco y describe lo que realmente quiere hacer, podemos ayudarlo más.