Главная > Среда и утилиты > sh

sh: Выполнение оболочечных скриптов и интерпретация команд

`sh` — это совместимый с Bourne shell интерпретатор команд. Он используется для выполнения скриптов или для интерактивного ввода и обработки команд. В большинстве систем Linux `/bin/sh` является символической ссылкой на другую оболочку, такую как `bash` или `dash`, и предоставляет среду выполнения скриптов, соответствующую стандарту POSIX.

Обзор

`sh` — одна из основных оболочек в системах Unix и Linux, используемая для выполнения скриптов и интерактивной обработки команд. Поскольку она строго соответствует стандарту POSIX, скрипты, написанные для `sh`, имеют высокую совместимость в различных системах.

Основные характеристики

  • Совместимость с POSIX: предоставляет основу для написания стандартных оболочечных скриптов
  • Выполнение скриптов: выполняет последовательность команд, сохраненную в файле
  • Интерактивная интерпретация команд: принимает и обрабатывает команды, введенные непосредственно пользователем
  • Системная интеграция: поставляется по умолчанию в большинстве систем Unix/Linux

Основные опции

`sh` предоставляет различные опции, влияющие на выполнение скриптов или их отладку.

Выполнение и отладка скриптов

Сгенерированная команда:

Комбинируйте команды.

Описание:

`sh` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

Выполнение файла скрипта

sh my_script.sh

Выполняет указанный файл скрипта с помощью `sh`.

Прямое выполнение строки команд

sh -c "echo 'Hello from sh!' && ls -l"

Использует опцию `-c` для выполнения строки команд в кавычках с помощью `sh`.

Выполнение скрипта в режиме отладки

sh -x debug_script.sh

Использует опцию `-x` для отслеживания процесса выполнения скрипта и отладки.

Выполнение команд из стандартного ввода

echo "ls -a" | sh

Выполняет команды, переданные через конвейер, с помощью `sh`.

Немедленный выход при возникновении ошибки

sh -e error_prone_script.sh

Обеспечивает немедленное завершение работы при возникновении ошибки в скрипте.

Советы и предостережения

`sh` — мощный инструмент, но важно понимать различия между ним и другими оболочками.

При написании скриптов

  • Рекомендуется указывать `#!/bin/sh` в первой строке скрипта, чтобы гарантировать его выполнение с помощью `sh`.
  • Расширенные функции других оболочек, таких как `bash` или `zsh` (например, массивы, продвинутое сопоставление с образцом, условные выражения `[[ ... ]]`), могут не работать в `sh`, поэтому следует использовать только синтаксис, совместимый с POSIX.
  • При отладке опция `-x` очень полезна для понимания потока выполнения скрипта и проверки значений переменных.

Совместимость

В большинстве дистрибутивов Linux `/bin/sh` является символической ссылкой на `dash` (в системах Debian/Ubuntu) или `bash` (в системах Red Hat/Fedora). Поэтому скрипты `sh` выполняются в режиме совместимости POSIX соответствующей связанной оболочки. Это означает, что они могут вести себя иначе, чем скрипты `bash`.


Те же команды в категории