Что такое оболочка Bash и почему она так важна для Linux

0
1990
просмотров
Что такое оболочка Bash и почему она так важна для Linux

Оболочке Bash уже более 30 лет, и она все еще пользуется успехом. Что она делает, откуда она взялась и почему она до сих пор остается самой распространенной оболочкой в системах Linux?

Что такое оболочка

Когда вы открываете окно терминала и вводите команды, что-то должно интерпретировать, что вы намеревались сделать, и запустить задачи, которые вы просили. Программное обеспечение, которое это делает, и есть оболочка. Оболочка — это интерпретатор команд. Он сканирует то, что вы набираете, и выбирает команды, имена каталогов, имена файлов и имена программ, чтобы понять, чего вы пытаетесь достичь.

Люди часто используют фразы «окна терминала», «командная строка» и «оболочка» как синонимы, но это три разные вещи. Окно терминала — это программное представление физического терминала телетайпа. Это дает вам соединение с компьютером. Чтобы делать что-нибудь полезное, вы должны иметь возможность вводить инструкции в командной строке. Командная строка предоставляется оболочкой, а окно терминала позволяет вам получить доступ к оболочке.

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

Первой оболочкой Unix была оболочка Томпсона под названием sh. Она была написана Кеном Томпсоном, который, возможно, является самым ключевым членом отцов-основателей оригинальной Unix в Bell Labs. Оболочка Томпсона использовалась в качестве оболочки Unix по умолчанию вплоть до Unix 6 версии включительно. В 1979 году она была заменена оболочкой Bourne в версии Unix 7.

Оболочка Bourne

Оболочка Bourne, написанная Стивеном Борном, была обновленной заменой оболочки Томпсона. Она даже была запущена с использованием той же команды, что и оболочка Томпсона (sh) для обеспечения обратной совместимости с существующими скриптами. Обратная совместимость была важна, но были добавлены новые функции, которые мы используем до сих пор.

Оболочка Bourne была интерактивной оболочкой и языком скриптов. Она поддерживает выполнение задач переднего и заднего плана, а также элементарное управление заданиями. Были добавлены каналы и перенаправление, а также улучшена обработка циклов.

Оболочка теперь содержала несколько встроенных команд, а это означало, что ей не нужно было передавать все внешним утилитам, что делало ее более эффективной. Оболочка Bourne даже поддерживала способ автоматизировать отправку данных в команды.

Читайте также  Как быстро переключиться в оконный режим практически в любой игре для ПК

Оболочка Bourne подняла планку и стала новым стандартом.

Появление Bash

В 1984 году, когда проект GNU объявил о своем намерении создать бесплатный клон Unix, написанный с нуля и с новой разрешающей лицензией, команде потребовалась оболочка. Когда выяснилось, что программист, который работал над оболочкой для проекта GNU не смог ничего предоставить, Брайану Фоксу было поручено написать клон оболочки Bourne.

Она была названа Bourne Again Shell, или Bash. Частично это было данью уважения Стивену Борну, а частично — игрой слов. После его выпуска в 1989 году Чет Рэми внес в Bash несколько исправлений ошибок. В конце концов он стал соавтором оболочки Bash. В настоящее время он по-прежнему поддерживает проект Bash.

Линус Торвальдс, создатель ядра Linux, сказал, что первыми двумя программами, которые он запускал на своем новом ядре в 1991 году, были Bash и gcc, компилятор GNU. Объединение утилит GNU с ядром Linux было взаимовыгодным. Операционной системе GNU требовалось ядро, а ядру Linux требовалось все остальное, что составляет клон Unix.

Поскольку Bash — это стандартная оболочка GNU, она стала стандартной оболочкой для всех дистрибутивов GNU/Linux. Теперь Linux поддерживает огромное количество людей по всему миру. Оболочка Bash тоже остается популярной.

Bash включает в себя и улучшает набор функций оболочки Bourne, но она также черпает вдохновение из других оболочек, таких как оболочка C (csh) и KornShell (ksh). Например, расширение тильды «~» до значения, содержащегося в переменной среды $HOME, пришла из оболочки C, а команда fc, которая вызывает редактор по умолчанию для команд в истории команд, пришла из KornShell.

Bash представил файлы конфигурации, такие как файлы «.bashrc» и «.bash_profile». Редактирование командной строки в Bash намного превзошло возможности предыдущих оболочек. Манипуляции с ранее выполненными командами в истории команд были улучшенной версией функции оболочки C. Массивы были улучшены за счет снятия ограничений на их размер.

Оболочка Bash стремится соответствовать стандарту POSIX P1003.2/ISO 9945.2 Shell и утилит.

Почему Bash по-прежнему важен

Bash не смог бы продержаться так долго — более 30 лет — в качестве оболочки Linux по умолчанию, если бы он не подходил для этой работы. Благодаря долгому сроку службы и огромной базе пользователей, Bash является очень стабильной. Доступно множество альтернативных оболочек, от старых оболочек, таких как оболочка C и KornShell, до более новых оболочек, таких как оболочка Z (zsh) и Friendly Interactive Shell (fish). Как оболочка Z, так и оболочка Fish имеют некоторые функции, которых нет в Bash, а также, возможно, лучшие способы достижения некоторых из тех же вещей, что есть у Bash. Так почему же Bash до сих пор остается доминирующей оболочкой?

Читайте также  Что такое WPA3, и когда я получу его на своем Wi-Fi?

Использование оболочки, которая совместима с POSIX, имеет значение для многих дистрибутивов Linux, но гораздо важнее совместимость с предыдущими выпусками. Внесение изменений, которые могут нарушить работу существующих скриптов, очевидно, не лучший шаг.

Будет ли когда-нибудь заменен Bash

То, что сейчас может показаться невероятным, на самом деле может случиться позже. Возможно, настанет день, когда Bash будет заменен в качестве оболочки Linux по умолчанию, независимо от того, будет это по-прежнему стандартная оболочка GNU или нет. Или, может быть, это будет Bash, но улучшенный далеко за пределы оболочки, которую мы используем сегодня. Но что бы ни пришло на смену сегодняшнему Bash, оно должно быть либо полностью (или почти) обратно совместимым, либо иметь столько преимуществ, что на недостатки можно было закрыть глаза.

Начиная с macOS версии 10.15, Apple отказалась от Bash и приняла оболочку Z в качестве оболочки по умолчанию. У Apple есть проблемы с Стандартной общественной лицензией GNU (GPL) v.3. К сожалению, это лицензия, которую использует Bash. Последней версией Bash, выпущенной под GPL v.2, была версия 3.2 2007 года. Текущая версия — 5.1. Apple отставала почти на полтора десятилетия. Единственный способ, которым Apple могла включить обновленную оболочку без перехода на GPL v.3, — это вообще перейти на другую оболочку. Однако вы все равно можете вернуться к Bash в macOS, если хотите.

Существует огромная разница между рабочей станцией опытного пользователя и бизнес-сервером Linux, которым необходимо удаленно управлять через соединение SSH. Из почти 1,5 миллиона серверов Amazon EC2 более 93% работают под управлением Linux. Почти 75% веб-серверов работают под управлением Linux. Такие организации, как Red Hat, Amazon и Google, используют Linux внутри компании.

Трудно представить, какие преимущества могла бы предложить новая оболочка, которая оправдала бы такие глобальные изменения. Вот почему Bash занимает такое важное место.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите свой комментарий!
Пожалуйста, введите ваше имя здесь

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.