O histórico misto de echo significa que sua operação padrão varia de shell para shell. POSIX especifica que o resultado de echo é "implementado-definido" se o primeiro argumento for -n ou qualquer argumento contém uma barra invertida.
É mais confiável usar printf (como um comando interno ou um comando externo) onde o comportamento é mais bem definido: a barra invertida no estilo C escapa e os especificadores de formato são suportados na string de formato (o primeiro argumento).
printf 'foo\nbar\n'
printf '%s\n%s\n' foo bar
Você pode controlar a expansão de sequências de escape de barra invertida do comando interno echo do bash com a opção xpg_echo shell.
Defina-o na parte superior de qualquer script bash para que echo expanda automaticamente as saídas de barra invertida sem precisar adicionar -e a cada comando de eco.
shopt -s xpg_echo
echo 'foo\nbar'