Olhando para a fonte da parede, diz isto:
259 if (print_banner == TRUE) {
...
...
271 where = ttyname(STDOUT_FILENO);
Esta chamada ttyname
é a causa do seu problema porque o cron não executa um TTY. Está fazendo isso porque o nome tty está na mensagem do banner I.E
Broadcast message from user@host (pts/0)
Baseado fora da lógica, no entanto, não vai tentar isso, se você não diz para imprimir um banner. É trivial evitar esse problema invocando wall
assim:
if ...
echo "warning" | wall -n 2>&1 > /dev/null
fi
Isso deve evitar completamente o problema. Você precisará fornecer seu próprio banner, no entanto, na saída resultante.