Основное отличие сценариев sh и bash в Linux заключается в том, что bash является более расширенной версией sh с дополнительными возможностями. 3
sh (Bourne Shell) — язык командного программирования для UNIX-подобных систем, определяемый стандартами POSIX. 15 sh может принимать входные данные либо с клавиатуры, либо из файла, обычно называемого файлом сценария. 5 sh не является полноценным языком программирования, это скорее спецификация с подробным описанием синтаксиса и семантики. 1
Bash (Bourne Again SHell) — командный интерпретатор, который широко используется в операционных системах семейства Unix, включая Linux. 3 Bash — это не только интерактивная оболочка для ввода команд, но и мощный язык программирования, позволяющий писать сложные скрипты для автоматизации задач. 3
Некоторые особенности Bash:
При этом bash обратно совместим с sh, поэтому sh-скрипт, скорее всего, будет выполняться на Bash без изменений. 5