Якщо ви хочете написати тут-doc, і ви не хочете, щоб будь-який документ розширювався або будь-які спеціальні символи були інтерпретовані, ви можете процитувати мітку одинарними цитатами, наприклад:
$ cat >file <<'EOF'
echo "$ABC=home_dir"
EOF
Однак ваша ситуація, описана у вашому прикладі, набагато складніша, тому що ви дійсно надсилаєте цей вміст через ssh, у віддалену систему, щоб запускати sudo, який також викликає оболонку (і щоб оболонка розширила вміст так само). Вам знадобиться більше рівнів цитування, щоб отримати це право, але навіть при цьому воно все одно не буде працювати, оскільки для sudo потрібен термінал (щоб він міг запитати пароль), і ви перенаправилися з stdin. Навіть використання ssh -t
тут не допоможе.
Також я згоден з Йоханом. Не ясно, що це дійсно те, чого ти хочеш; зауважте, що присвоювати значення посиланню на змінну оболонки неправомірно, тому якщо цей файл, який ви намагаєтеся створити, повинен бути сценарієм оболонки, він не працюватиме так, як ви його описали. Можливо, якщо ви трохи зробите резервну копію і опишіть, що ви дійсно хочете зробити, ми можемо допомогти більше.