Короткий ответ - нет, они не совместимы на 100%.
Но большинство оболочек довольно близки к базовым, поэтому вы вряд ли столкнетесь с несоответствиями. На самом деле, большинство оболочек отличаются не сильно добавленным синтаксисом, а некоторыми дополнительными функциями, такими как завершение табуляции и тому подобное.
Кроме того, dashявляется своего рода потомком ash- или портом от BSD к Linux, если быть точным. И все они должны быть потомками или разными реализациями sh. На самом деле, shна большинстве систем просто символическая ссылка на bash, dashили что - то еще. Важным является соответствие POSIX - и когда вы пишете сценарии в соответствии со стандартами, у вас не возникнет проблем.
Разница между этими оболочками заключается в оптимизации и производительности. Тогда bashони менее функциональны , но являются вполне законными оболочками. Bash является многофункциональным для интерактивной работы, но, например, использует больше памяти.