Оборачивание назначения в составной блок и использование перенаправления, похоже, работает:
{ var=$(<"$file"); } 2>/dev/null;
напр.
$ echo hello > test1; rm -f test2
$ file=test1; { var=$(<"$file"); } 2>/dev/null; echo "${var:-[it is empty]}"
hello
$ file=test2; { var=$(<"$file"); } 2>/dev/null; echo "${var:-"[it is empty]"}"
[it is empty]
Просто не используйте (.. )
для создания подоболочки, так как тогда назначенная переменная будет потеряна.
Насколько мне известно, Journald не поддерживает переадресацию TCP. Вам действительно придется дублировать его сообщения в системный журнал.