Поиск по сайту:

Иногда достаточно обругать человека, чтобы не быть им обманутым! (К. Прутков).

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

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

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

 

Оболочка Linux

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

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

$ date

 

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

  • Оболочка по умолчанию приняла команду «дата», интерпретировала ее и запустила инструмент даты.
  • Он также распечатал вывод на экране консоли.

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

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

  • Zsh с Oh My Zsh
  • Fish shell

 

Оболочка 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.

Читать  Необычные способы использования переменных внутри сценариев Bash

Разработанный Брайаном Фоксом для проекта 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 :

  • Bash поддерживает завершение командной строки с помощью клавиши TAB.
  • Просмотрите историю команд, используя клавишу со стрелкой ВВЕРХ или «Ctrl + R».
  • Арифметический расчет без каких-либо сторонних инструментов
  • Ассоциативные массивы
  • Горячие клавиши
  • Поддержка настройки для презентации Bash по умолчанию
  • Переменные среды EPOCHSECONDS и EPOCHREALTIME
  • Расширения скобок

 

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

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

$ bash --posix

 

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

#!/bin/bash
set -o posix

 

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

 

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

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

Читать  Структура команд в Linux

 

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

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

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

 

Сценарии

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

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

 

Заключение

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:
0 0 votes
Рейтинг статьи
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments

Читайте также

0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close