Обзор
`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`.