A resposta curta é que \ nem sempre é especial para bash ou para echo . As aspas duplas preservam o valor da string literal de tudo dentro, exceto $ , ' , \ e, às vezes, ! . Fora as aspas duplas, \ é sempre especial para bash: ele preserva o valor da string literal do caractere seguinte. Dentro das aspas, a contra-barra \ é especial apenas quando seguida por um dos cinco caracteres: $ , ' , " , \ ou uma nova linha. Nos quatro primeiros casos, ele preserva o valor da string literal do caractere seguinte. Para a versão bash do eco, \ nunca é especial, a menos que o sinalizador -e seja fornecido.
Então, nos dois casos, o que está acontecendo:
echo "\n"
neste caso, \ não é seguido por um dos cinco caracteres mencionados e, portanto, é tratado como seu valor de string literal.
echo "\n"
neste caso, o primeiro \ é seguido por um segundo \ . O primeiro escapa do segundo, de modo que é interpretado como seu valor de string literal. Isso é inútil aqui, já que seria interpretado como seu valor de string literal de qualquer maneira , mas poderia ser útil se você quisesse imprimir uma única barra invertida no final de uma linha, como em:
echo "This is a single backslash:\"
caso contrário, a barra invertida seria interpretada pelo shell como escapando de " .
Todas essas informações podem ser obtidas da parte da página bash man sobre aspas duplas, encontradas aqui .