La respuesta corta es no, no son 100% compatibles.
Pero la mayoría de las conchas están bastante cerca de lo básico, por lo que rara vez se topan con inconsistencias. De hecho, la mayoría de los shells difieren no mucho por la sintaxis agregada, sino por algunas características adicionales como la finalización de pestañas y similares.
Además, dash
es una especie de descendiente de ash
- o puerto de BSD a Linux, para ser precisos. Y todos ellos deberían ser descendientes o diferentes implementaciones de sh
. De hecho, sh
es en la mayoría de los sistemas sólo un enlace simbólico a bash
, dash
o algo más. Lo que importa es el cumplimiento de POSIX, y cuando escribe scripts de acuerdo con los estándares, no tendrá problemas.
La diferencia entre esos shells está en las optimizaciones y el rendimiento. Por lo tanto, son menos ricas en características bash
, pero son shells totalmente legítimos. Bash es rico en funciones para el trabajo interactivo, pero usa más memoria, por ejemplo.