18

Разница между sh и Bash

9

Разница между Bash и sh

При написании скриптов для оболочки мы часто используем /bin/sh и /bin/bash. Обычно я предпочитаю bash, но не совсем понимаю, в чем между ними разница.

Какова основная разница между Bash и sh?

На что нам следует обратить внимание при программировании на Bash и sh?

2 ответ(ов)

0

Они практически идентичны, но bash имеет больше функций. sh – это (более или менее) устаревший подмножество bash.

sh часто означает оригинальную Bourne shell, которая предшествует bash (Bourne *again* shell) и была создана в 1977 году. Однако на практике лучше рассматривать sh как высоко совместимую оболочку, соответствующую стандарту POSIX с 1992 года.

Скрипты, начинающиеся с #!/bin/sh или использующие оболочку sh, обычно делают это для обеспечения обратной совместимости. На любой UNIX/Linux системе должна быть оболочка sh. Например, в Ubuntu sh часто вызывает dash, а на MacOS это специальная версия POSIX bash. Эти оболочки могут быть предпочтительными для соблюдения стандартов, скорости или обратной совместимости.

bash новее оригинального sh, добавляет больше функций и стремится быть обратно совместимым с sh. Программы, написанные для sh, обычно работают без проблем в bash. bash доступен на почти всех системах Linux/UNIX и обычно используется по умолчанию, за исключением MacOS, где по умолчанию используется zsh, начиная с версии Catalina (10.15). FreeBSD, по умолчанию, не включает bash в комплект.

0

В операционной системе Linux существует несколько типов оболочек (shell). Хотя у оболочек много общих команд, каждая из них обладает уникальными возможностями. Давайте рассмотрим различные наиболее часто используемые оболочки.

Оболочка Sh:

Оболочка Sh, также известная как Bourne shell, была первой оболочкой, разработанной для компьютеров Unix Стивеном Борном в лабораториях AT&T Bell Labs в 1977 году. Она включает в себя множество инструментов для написания сценариев.

Оболочка Bash:

Оболочка Bash расшифровывается как Bourne Again Shell. Bash является стандартной оболочкой большинства дистрибутивов Linux и заменяет оболочку Sh (при этом сценарии, написанные для Sh, также могут выполняться в Bash). Оболочка Bash может выполнять подавляющее большинство сценариев оболочки Sh без модификаций и также предоставляет возможность редактирования командной строки.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь