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