A resposta curta é não, eles não são 100% compatíveis.
Mas a maioria das conchas é bem próxima do básico, então você raramente esbarra em inconsistências. De fato, a maioria dos shells diferem pouco devido à sintaxe adicionada, mas por alguns recursos extras, como conclusão de tabulação e similares.
Além disso, dash
é uma espécie de descendente de ash
- ou porta do BSD para o Linux, para ser mais preciso. E todos eles devem ser descendentes ou diferentes implementações de sh
. Na verdade, sh
é na maioria dos sistemas apenas um link simbólico para bash
, dash
ou qualquer outra coisa. O que importa é a conformidade com o POSIX - e quando você escreve scripts de acordo com os padrões, não terá problemas.
A diferença entre essas conchas está em otimizações e desempenho. Eles são menos ricos em recursos bash
, mas são conchas totalmente legítimas. O Bash é rico em recursos para trabalho interativo, mas usa mais memória, por exemplo.