Porque aparentemente Mac OS es uno de los sistemas que responde a la xpg_echo
cuando se ejecuta en modo POSIX. Ejecutar bash como /bin/sh es equivalente a ejecutarlo con --posix
o estableciendo POSIXLY_CORRECT.
La solución es dejar de usar echo
excepto en los casos en los que no puede haber ambigüedad. printf
es el sustituto portátil. Nunca use banderas de opción para hacer eco, (y use printf
si lo hace).
Existen múltiples implementaciones históricas incompatibles de echo
que rompen su especificación de una manera que no se puede arreglar, y las banderas de opción son, por lo tanto, no portables. No conozco nada que actualmente implemente POSIX echo
correctamente.
shopt -u xpg_echo
debería modificar este comportamiento. Además, como ya has descubierto, no se ejecuta en modo POSIX.
También es posible que desee actualizar ... bash 3 se está convirtiendo en un poco crujiente. Muchos errores han sido corregidos desde entonces.