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