Что такое оболочка?
В своей основе оболочка — это просто макропроцессор, выполняющий команды. Под термином «макропроцессор» подразумевается функциональность, при которой текст и символы раскрываются, образуя более крупные выражения.
Оболочка Unix — это одновременно интерпретатор команд и язык программирования. Как интерпретатор команд, оболочка предоставляет пользователю интерфейс к широкому набору утилит GNU. Возможности языка программирования позволяют объединять эти утилиты. Пользователи могут создавать файлы, содержащие команды, которые сами становятся командами. Эти новые команды имеют тот же статус, что и системные команды в каталогах, таких как /bin, позволяя пользователям или группам создавать собственные среды для автоматизации повседневных задач.
Оболочки можно использовать в интерактивном и неинтерактивном режимах. В интерактивном режиме они принимают ввод с клавиатуры. В неинтерактивном режиме оболочки выполняют команды, прочитанные из файла или строки.
Оболочка позволяет выполнять команды GNU как синхронно, так и асинхронно. Оболочка ожидает завершения синхронных команд, прежде чем принять новый ввод; асинхронные команды продолжают выполняться параллельно с оболочкой, пока она считывает и выполняет дополнительные команды. Конструкции перенаправления обеспечивают точное управление вводом и выводом этих команд. Кроме того, оболочка позволяет управлять содержимым окружения команд.
Оболочки также предоставляют небольшой набор встроенных команд (встроенных команд), реализующих функциональность, которую невозможно или неудобно получить с помощью отдельных утилит. Например, cd, break, continue и exec нельзя реализовать вне оболочки, поскольку они непосредственно управляют самой оболочкой. Встроенные команды history, getopts, kill или pwd, помимо прочих, можно реализовать в виде отдельных утилит, но их удобнее использовать как встроенные команды. Все встроенные команды оболочки описаны в последующих разделах.
Хотя выполнение команд имеет принципиальное значение, большая часть возможностей (и сложности) оболочек обусловлена встроенными в них языками программирования. Как и любой язык высокого уровня, оболочка предоставляет переменные, конструкции управления потоком выполнения, кавычки и функции.
Оболочки предлагают возможности, предназначенные специально для интерактивного использования, а не для расширения языка программирования. К таким интерактивным возможностям относятся управление заданиями, редактирование командной строки, история команд и псевдонимы. В этом руководстве описано, как Bash предоставляет все эти возможности.
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/What-is-a-shell_003f.html