ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Сравните оболочек sh и Bash

Сравните оболочек sh и Bash

Любая современная операционная система UNIX/Linux поставляется с установленными по умолчанию оболочками sh и Bash. Хотя оба они очень похожи по своей природе, один предлагает больше, чем другой.

В этой статье подробно рассматриваются различия и сходства между оболочками sh и Bash.

 

Оболочка Linux

В Linux оболочка — это специальная программа для интерпретации команд. Он интерпретирует командный язык и сообщает системе выполнять описанные задачи. Он не является частью ядра, но может выполнять такие задачи, как запуск программ и создание файлов.

Функциональность оболочки лучше понять на примере. Откройте терминал в вашей системе и выполните следующую команду:

$ date

 

Здесь мы отметили следующее:

Оболочки также могут поставляться со своими языками. Сценарии Bash, например, эффективны в автоматизации очень сложных задач и достижении чудес.

Для платформы Linux доступно множество оболочек. Очевидно, что наиболее популярной является оболочка Bash. Вот несколько альтернативных оболочек, на которые стоит обратить внимание:

 

Оболочка Bourne (sh)

Оболочка Bourne является оболочкой по умолчанию для версии 7 UNIX. Первоначально разработанный Стивеном Борном в Bell Labs, он был заменой оболочки Томпсона. Оболочка Bourne начала свой путь в 1979 году. Узнайте больше об истории оболочки Bourne в Википедии.

Даже по сей день оболочка Bourne доступна почти во всех системах Linux. Расположение бинарника следующее:

$ which sh

 

UNIX-подобные системы по-прежнему имеют оболочку Bourne в /usr/bin/sh. Это может быть не оболочка Bourne, а символическая/жесткая ссылка на более совместимую оболочку. Вы можете проверить это, выполнив следующую команду:

$ file -h /bin/sh

 

Оболочка sh также является названием командного языка программирования. Этот язык описывается стандартом POSIX, которому должны следовать все UNIX и UNIX-подобные системы. Оболочка Bourne, которую мы обсуждали до сих пор, является одной из реализаций sh.

 

Оболочка Bourne Again (Bash)

Теперь мы подошли к современной оболочке, которую мы все знаем и любим — оболочке Bash, также известной как «Bourne Again Shell». Название представляет собой игру слов, указывающую на то, что оно заменяет оболочку Bourne.

Разработанный Брайаном Фоксом для проекта GNU, Bash является одновременно оболочкой UNIX и командным языком. Впервые он был выпущен в 1989 году. С тех пор он является оболочкой входа по умолчанию для большинства дистрибутивов Linux. Узнайте больше об истории оболочки Bash в Википедии.

Bash является надмножеством sh, что означает, что он включает в себя функции sh и некоторые другие. Как язык, большинство команд делают то же самое, что и sh. Однако Bash не является POSIX-совместимой оболочкой, а скорее является диалектом языка оболочки POSIX. Bash предназначен для реализации части оболочки и инструментов IEEE POSIX спецификации IEEE POSIX (стандарт IEEE 1003.1).

Проверьте расположение бинарного файла оболочки Bash:

$ which bash

 

Различия между sh и Bash

Учитывая исторический контекст, у sh и Bash больше общего, чем различий, поскольку один является лучшей реализацией другого. Несмотря на это, вот некоторые заметные различия в функциях, которые следует знать.

 

Оболочка по умолчанию

В большинстве современных систем Bash является оболочкой по умолчанию.

 

Бинарное местоположение

Проверьте бинарное расположение обеих оболочек:

$ which sh
$ which bash

 

Характерная черта

По сравнению с sh, Bash предлагает гораздо большую гибкость и синтаксис, похожий на современный язык программирования. Вот некоторые дополнительные функции, которые Bash предлагает по сравнению с sh :

 

POSIX-совместимость

По умолчанию Bash не совместим с POSIX, тогда как sh. Однако мы можем запустить Bash в режиме, совместимом с POSIX, с помощью следующей команды:

$ bash --posix

 

Если вы пишете сценарий Bash, но вам нужен стандарт POSIX, используйте следующий код в начале:

#!/bin/bash
set -o posix

 

Здесь команда set указывает Bash включить режим POSIX.

 

Простота использования

Bash предлагает более современный язык командной строки по сравнению с sh. В связи с этим вам будет удобнее использовать Bash.

 

Портативность

По сравнению с Bash, sh обеспечивает лучшую переносимость.

Поскольку sh совместим с POSIX, любая оболочка, поддерживающая POSIX, сможет запускать сценарии sh. Например, Bash может запускать сценарии sh в режиме POSIX.

 

Сценарии

Когда вы пишете скрипт на Bash, код гарантированно совместим только с Bash.

С другой стороны, при написании сценариев в sh код можно запускать в любой оболочке. Это потому, что sh определяет исходный язык сценариев оболочки.

 

Заключение

В этой статье мы рассмотрели историю, сходства и различия между sh и Bash. Sh является предшественником Bash. Оба они доступны во всех современных системах UNIX/Linux. В то время как Bash предлагает более удобный и простой в использовании опыт, sh предлагает совместимость, переносимость и стандартизированный синтаксис/поведение.

Вы новичок в написании сценариев Bash? Эта статья по написанию сценариев Bash для начинающих охватывает все необходимое для написания сценариев Bash. Мы надеемся, что вы нашли эту статью полезной.

Exit mobile version