Кто там из них bash и "не bash" и в чем разница?
Вначале
было слово был Bourne shell (семидесятые, времена первых UNIX и C).
Потом командных интерпретаторов расплодилось неимоверное количество, но получила распространение пара - ksh (Korn Shell, на основе Bourne shell) и csh (C shell). ksh лёг в основу POSIX-стандарта и постепенно вытеснил csh (девяностые). Параллельно развивался bash (появился в 1989 году) и в начале 2000-х вытеснил, параллельно с ростом популярности GNU и Linux, прочие варианты.
По языку bash - надмножество
Bourne shell.
Может работать в POSIX-режиме (когда вызывается с ключом --posix или через симлинк sh в ряде дистрибутивов Linux) или своём основном расширенном режиме. На практике большинство скриптов ограничиваются возможностями POSIX, даже когда в них указывается "#!/bin/bash".
Описание языка Bourne shell можно почитать например здесь:
An Introduction to the Unix Shell.
Из существенных расширений bash - математика, рекурсивный глоб (**/...), глоб-перечисление ({jpg,png}), регэкспы, ассоциативные массивы.
Детальнее -
на вики.
Табличное сравнение интерпретаторов можно посмотреть
там же.
Немного об отличиях старого sh и bash
на StackOverflow.