stringtranslate.com

Bash (оболочка Unix)

Bash — это оболочка и командный язык Unix , написанный Брайаном Фоксом для проекта GNU в качестве бесплатной программной замены оболочки Bourne . [15] [16] Название оболочки является аббревиатурой от Bourne-Again SHell , игры слов в названии оболочки Bourne, которое она заменяет [17] и понятии « рождения заново ». [18] [19] Впервые выпущенная в 1989 году, [20] она использовалась в качестве оболочки входа по умолчанию для большинства дистрибутивов Linux и была одной из первых программ, портированных Линусом Торвальдсом на Linux, наряду с GCC . [21] Он доступен практически во всех современных операционных системах.

Bash — это командный процессор , который обычно работает в текстовом окне , где пользователь вводит команды, вызывающие действия. Bash также может читать и выполнять команды из файла, называемого скриптом оболочки . Как и большинство оболочек Unix, он поддерживает подстановку имен файлов (сопоставление с подстановочными знаками), конвейеризацию , здесь документы , подстановку команд , переменные и структуры управления для проверки условий и итерации . Ключевые слова , синтаксис , переменные с динамической областью действия и другие основные функции языка скопированы из sh . Другие функции, например, история , копируются из csh и ksh . Bash — это POSIX -совместимая оболочка, но с рядом расширений.

Версия также доступна для Windows 10 и Windows 11 через подсистему Windows для Linux . [22] [23] Это также пользовательская оболочка по умолчанию в Solaris 11. [24] Bash также была оболочкой по умолчанию в BeOS , [7] и в версиях Apple macOS от 10.3 (первоначально оболочкой по умолчанию была tcsh ) до 10.15 ( macOS Catalina ), в которой оболочка по умолчанию изменена на zsh , [25] хотя Bash остается доступным в качестве альтернативной оболочки. [26]

Дыра в безопасности Bash, датируемая версией 1.03 (август 1989 года), [27] получившая название Shellshock , была обнаружена в начале сентября 2014 года и быстро привела к целому ряду атак в Интернете . [28] [29] [30] Патчи для исправления ошибок стали доступны вскоре после того, как ошибки были обнаружены.

История

Брайан Фокс начал программировать Bash 10 января 1988 года, [31] после того, как Ричард Столлман был недоволен отсутствием прогресса, достигнутого предыдущим разработчиком. [15] Столлман и Фонд свободного программного обеспечения (FSF) рассматривали свободную оболочку, которая могла бы запускать существующие сценарии оболочки, настолько стратегически важную для полностью свободной системы, построенной из кода BSD и GNU, что это был один из немногих проектов, которые они финансировали сами, а Fox взял на себя обязательство работа в качестве сотрудника ФСФ. [15] [32] Фокс выпустил бета-версию Bash, версию .99, 8 июня 1989 года, [20] и оставался основным сопровождающим до середины 1992 года [33] и середины 1994 года, [34] когда он был уволен из FSF [35] , и его ответственность была передана другому одному из первых участников, Чету Рэми. [36] [37] [38]

С тех пор Bash стала самой популярной оболочкой среди пользователей Linux, став интерактивной оболочкой по умолчанию в различных дистрибутивах этой операционной системы [39] [40] (хотя оболочка Almquist может быть оболочкой сценариев по умолчанию) и в выпусках Apple macOS. до Catalina в октябре 2019 года. [41] [42] [25] Bash также был портирован на Microsoft Windows и распространялся с Cygwin и MinGW , на DOS проектом DJGPP , на Novell NetWare , на OpenVMS проектом GNV, [43 ] в ArcaOS , [44] и в Android через различные приложения эмуляции терминала.

В сентябре 2014 года Стефан Шазелас, специалист по Unix/Linux, [45] обнаружил ошибку безопасности в программе. Ошибка, впервые обнаруженная 24 сентября, получила название Shellshock и получила номера CVE — 2014-6271, CVE-2014-6277 и CVE-2014-7169. Ошибка была расценена как серьезная, поскольку CGI- скрипты, использующие Bash, могли быть уязвимыми, делая возможным выполнение произвольного кода . Ошибка была связана с тем, как Bash передает определения функций подоболочкам через переменные среды . [46]

Функции

Синтаксис команд Bash является расширенным набором синтаксиса команд оболочки Bourne. Bash поддерживает расширение фигурных скобок , [47] завершение командной строки (программируемое завершение), [48] базовую отладку [49] [50] и обработку сигналов (с использованием trap), начиная с bash 2.05a [51] [52] среди других функций. Bash может выполнять подавляющее большинство сценариев оболочки Bourne без изменений, за исключением сценариев оболочки Bourne, которые спотыкаются о пограничном синтаксическом поведении, интерпретируемом по-разному в Bash, или пытаются запустить системную команду, соответствующую более новой встроенной функции Bash, и т. д. Синтаксис команд Bash включает в себя нарисованные идеи. из Korn Shell (ksh) и оболочки C (csh), такие как редактирование командной строки, история команд ( historycommand), [53] стек каталогов, переменные $RANDOMи и синтаксис подстановки команд$PPID POSIX .$(…)

Когда пользователь нажимает клавишу табуляции в интерактивной командной оболочке, Bash автоматически использует завершение командной строки , начиная с бета-версии 2.04, [54] для сопоставления частично типизированных имен программ, имен файлов и имен переменных. Система завершения командной строки Bash очень гибка и настраиваема и часто включает в себя функции, которые дополняют аргументы и имена файлов для конкретных программ и задач.

Синтаксис Bash имеет множество расширений, которых нет в оболочке Bourne. Bash может выполнять целочисленные вычисления («арифметические вычисления») без запуска внешних процессов. Для этой цели он использует ((…))команду и $((…))синтаксис переменных. Его синтаксис упрощает перенаправление ввода-вывода . Например, он может одновременно перенаправить стандартный вывод (stdout) и стандартную ошибку&> (stderr) с помощью оператора. Это проще вводить, чем эквивалент оболочки Bourne ' command > file 2>&1'. Bash поддерживает замену процессов с использованием синтаксиса <(command)and >(command), который заменяет вывод (или ввод) команды там, где обычно используется имя файла. (Это реализуется через безымянные каналы /proc/fd/ в системах, которые это поддерживают, или через временные именованные каналы, где это необходимо).

При использовании ключевого слова «функция» объявления функций Bash несовместимы со сценариями Bourne/Korn/POSIX (у KornShell возникает та же проблема при использовании «функции»), но Bash принимает тот же синтаксис объявления функций, что и оболочки Bourne и Korn. и является POSIX-совместимым. Из-за этих и других различий сценарии оболочки Bash редко выполняются под интерпретаторами оболочки Bourne или Korn, если только они не написаны намеренно с учетом этой совместимости, которая становится все менее распространенной по мере того, как Linux становится все более распространенным. Но в режиме POSIX Bash более точно соответствует POSIX. [55]

Bash поддерживает здесь документы . Начиная с версии 2.05b Bash может перенаправлять стандартный ввод (stdin) из «здесь строки» с помощью <<<оператора.

Bash 3.0 поддерживает сопоставление регулярных выражений внутри процесса, используя синтаксис, напоминающий Perl . [56]

В феврале 2009 года [57] в Bash 4.0 появилась поддержка ассоциативных массивов . [13] Индексы ассоциативного массива представляют собой строки, аналогично AWK или Tcl . [58] Их можно использовать для эмуляции многомерных массивов. Bash 4 также меняет свою лицензию на GPL-3.0 или более позднюю версию ; некоторые пользователи подозревают, что это изменение лицензии является причиной того, что MacOS продолжает использовать более старые версии. [59] Apple окончательно прекратила использовать Bash в своих операционных системах в качестве оболочки по умолчанию с выпуском MacOS Catalina в 2019 году. [26]

Расширение скобок

Расширение скобок, также называемое чередованием , — это функция, скопированная из оболочки C. Он генерирует набор альтернативных комбинаций. Сгенерированные результаты не обязательно должны существовать в виде файлов. Результаты каждой развернутой строки не сортируются, и сохраняется порядок слева направо:

$ echo  a { p,c,d,b } e ape ace ade abe $ echo { a,b,c }{ d,e,f } ad ae af bd be bf cd ce cf 

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

$ # оболочка bash $ /bin/bash  -c 'echo a{p,c,d,b}e' ape ace ade abe $ # Традиционная оболочка не выдает тот же результат $ /bin/sh -c 'echo a {p,c,d,b}e' a{p,c,d,b}e   

Когда раскрытие фигурных скобок сочетается с подстановочными знаками, сначала раскрываются фигурные скобки, а затем полученные подстановочные знаки заменяются обычным способом. Следовательно, список изображений JPEG и PNG в текущем каталоге можно получить, используя:

лс  *. { jpg,jpeg,png } # расширяется до *.jpg *.jpeg *.png - после чего # подстановочные знаки обрабатываются echo *. { png,jp { e, } g } # echo просто показывает расширения - # и возможны фигурные скобки.     

Помимо чередования, раскрытие фигурных скобок можно использовать для последовательных диапазонов между двумя целыми числами или символами, разделенными двойными точками. Более новые версии Bash позволяют использовать третье целое число для указания приращения.

$ echo { 1 ..10 } 1 2 3 4 5 6 7 8 9 10 $ echo { 01 ..10 } 01 02 03 04 05 06 07 08 09 10 $ echo file { 1 ..4 } .txt file1.txt file2.txt file3.txt file4.txt $ echo { a..e } abcde $ echo { 1 ..10..3 } 1 4 7 10 $ echo { a..j..3 } adgj      

Когда раскрытие фигурных скобок сочетается с раскрытием переменных ( расширение параметров АКА и подстановка параметров ), раскрытие переменных выполняется после раскрытия фигурных скобок, что в некоторых случаях может потребовать использования evalвстроенных функций, например:

$ начало = 1 ; end = 10 $ echo { $start .. $end } # не удается расширить из-за порядка вычисления {1..10} $ eval echo { $start .. $end } # происходит расширение переменной, затем оценивается результирующая строка 1 2 3 4 5 6 7 8 9 10      

Скрипты запуска

Когда Bash запускается, он выполняет команды в различных точечных файлах . В отличие от сценариев оболочки Bash, точечные файлы обычно не имеют ни разрешения на выполнение, ни директивы интерпретатора, такой как #!/bin/bash.

Пример запуска Bash, совместимый с Legacy

Приведенный ниже пример ~/.bash_profileсовместим с оболочкой Bourne и дает семантику, аналогичную csh для ~/.bashrcи ~/.bash_login. Это короткая оценка , которая проверяет, существует ли имя файла и доступно ли оно для чтения, пропуская часть после, если это не так.[ -r filename ] && cmd&&

[  -r  ~/.profile ] && . ~/.profile # настройка среды один раз, синтаксис Bourne-sh только если [ -n " ​​$PS1 " ] ; тогда # мы интерактивны? [ -r ~/.bashrc ] && . ~/.bashrc # настройка tty/prompt/function для интерактивных оболочек [ -r ~/.bash_login ] && . ~/.bash_login # любые задачи при входе в систему, только для оболочки входа fi # Конец блока «if»                             

Проблемы операционной системы при запуске Bash

Некоторые версии Unix и Linux содержат сценарии запуска системы Bash, обычно находящиеся в /etcкаталоге. Bash выполняет эти файлы как часть стандартной инициализации, но другие файлы запуска могут читать их в другом порядке, чем документированная последовательность запуска Bash. Содержимое файлов root-пользователя по умолчанию также может иметь проблемы, а также файлы скелета, которые система предоставляет новым учетным записям пользователей при настройке. Сценарии запуска, запускающие систему X Window, также могут делать неожиданные вещи со сценариями запуска Bash пользователя, пытаясь настроить переменные пользовательской среды перед запуском оконного менеджера . Эти проблемы часто можно решить с помощью файла ~/.xsessionили ~/.xprofileдля чтения ~/.profile— который предоставляет переменные среды, которые окна оболочки Bash порождают из оконного менеджера, такие как xterm или Gnome Terminal .

Портативность

См. Также: Основные отличия от Bourne Shell.

Вызов Bash с --posixопцией или указание set -o posixв сценарии приводит к тому, что Bash очень близко соответствует стандарту POSIX 1003.2 . [60] Сценарии оболочки Bash, предназначенные для переносимости , должны учитывать как минимум стандарт оболочки POSIX. Некоторые функции bash, которых нет в POSIX: [60] [61]

Если часть кода использует такую ​​возможность, это называется «башизм» — проблема для портативного использования. Debian checkbashismsи Vidar Holen shellcheckможно использовать, чтобы убедиться, что сценарий не содержит этих частей. [63] [64] Список варьируется в зависимости от фактической целевой оболочки: политика Debian разрешает некоторые расширения в их сценариях (например, в оболочке Dash ), [61] в то время как сценарий предназначен для поддержки оболочек Bourne до POSIX, например autoconfconfigure еще более ограничены в возможностях, которые они могут использовать . [65]

Горячие клавиши

Bash использует GNU Readline для предоставления сочетаний клавиш для редактирования командной строки с использованием привязок клавиш по умолчанию ( Emacs ). Привязки Vi можно включить, запустив set -o vi. [66]

Управление процессами (контроль работ)

Оболочка Bash имеет два режима выполнения команд: пакетный (асинхронный) и параллельный (синхронный).

Для выполнения команд в пакетном режиме (т.е. последовательно) их необходимо разделить символом «;» или выделить в отдельные строки:

команда1 ;  команда2команда3

В этом примере, когда команда1 завершается, выполняется команда2, а когда команда2 завершается, выполняется команда3.

Фоновое выполнение команды 1 может произойти с использованием (символа &) в конце команды выполнения, и процесс будет выполняться в фоновом режиме с немедленным возвратом управления оболочке и разрешением продолжения выполнения команд.

команда1 & 

Или, чтобы одновременно выполнить две команды Command1 и Command2, они должны быть выполнены в оболочке Bash следующим образом:

команда1 и команда2  

В этом случае команда1 выполняется в фоновом режиме и символе, немедленно возвращая управление оболочке, которая выполняет команду2 на переднем плане.

Процесс можно остановить и вернуть управление в bash, набрав Ctrl+ z, пока процесс выполняется на переднем плане. [67]

Список всех процессов, как фоновых, так и остановленных, можно получить, запустив jobs:

$ jobs [1] — Выполнение команды 1 и [2] + Остановка команды 2

В выводе число в скобках относится к идентификатору задания. Знак плюс означает процесс по умолчанию для bgи fg. Тексты «Выполняется» и «Остановлен» относятся к состоянию процесса . Последняя строка — это команда, запустившая процесс.

Состояние процесса можно изменить с помощью различных команд. Команда fgпереводит процесс на передний план и bgустанавливает остановленный процесс в фоновом режиме. bgи fgможет принять идентификатор задания в качестве первого аргумента, чтобы указать процесс, над которым нужно действовать. Без него используется процесс по умолчанию, обозначенный знаком плюс в выходных данных jobs. Эту killкоманду можно использовать для преждевременного завершения процесса, отправив ему сигнал . Идентификатор задания необходимо указывать после знака процента:

убить  %1

Условное исполнение

Bash предоставляет разделители команд «условного выполнения», которые ставят выполнение команды в зависимость от кода завершения , установленного предшествующей командой. Например:

cd " $ГДЕ-ТО " && ./do_something || echo «Произошла ошибка» > & 2       

Где ./do_something выполняется только в том случае, если команда cd (изменить каталог) была «успешной» (возвращала нулевой статус выхода), а команда echo будет выполняться только в том случае, если команда cd или ./do_something возвращает «ошибку». (ненулевой статус выхода).

Для всех команд статус завершения сохраняется в специальной переменной $?. Bash также поддерживает и формирует условную оценку команд.if ...;then ...;else ...;ficase $VARIABLE in $pattern)...;;$other_pattern)...;; esac

Отчеты об ошибках

Внешняя команда bashbug сообщает об ошибках оболочки Bash. Когда команда вызывается, она открывает редактор по умолчанию пользователя с формой для заполнения. Форма отправляется по почте сопровождающим Bash (или, при необходимости, на другие адреса электронной почты). [68] [69]

Программируемое завершение

Bash поддерживает программируемое завершение с помощью встроенных команд complete, compoptи compgen. [70] Эта функция доступна с бета-версии 2.04, выпущенной в 2000 году. [71] [72] Эти команды обеспечивают сложную и интеллектуальную спецификацию завершения для команд (т.е. установленных программ), функций, переменных и имен файлов. [73]

Две команды completeи compoptопределяют, как аргументы некоторых доступных команд или опций будут перечислены во входных данных readline . Начиная с версии 5.1 завершение команды или опции обычно активируется нажатием клавиши после ввода ее имени. [73]Tab ↹

Название программы

Название программы представляет собой фигуру речи или остроту , которая начинается с уважения к Стивену Борну , создателю одной из программ оболочки, которую иногда считали замененной оболочкой bash. Его имя используется как каламбур на образе родов, и к этому каламбуру добавляется намек на христианскую идиому «рождения свыше » или, возможно, на буддийскую идею реинкарнации . Мерриам-Вебстер , который иногда рассматривается как отсылка к 3-й главе христианского Нового Завета , Мерриам-Вебстер определяет «рожденного свыше» как «человека, принявшего обновленное… обязательство веры». [74] Эта идиома затем используется для обозначения программа: Bourne Again SHell . [75] [76]

Акронимом этого названия является « bash», слово, означающее «сильно ударить » . [ 77] некоторое разочарование . Подобные образы негативной эмоциональности можно рассматривать как прямо противоречащие идее «рождения свыше».

Такое наименование можно считать примером словесной иронии или случайной инсинуации . Грамматика Bash изначально была основана на грамматиках наиболее популярных программ оболочки Unix, используемых в то время, некоторые из которых в то время считались особенно трудными в использовании или разочаровывающими . С течением времени разработка bash сделала грамматику более удобной для пользователя, [78] [79] [80] [81] [82] [83] настолько, что кажется вероятным, что проект bash был направлен на улучшение это удобство использования. С тех пор bash стал де-факто программой оболочки по умолчанию в большинстве операционных систем Linux и Unix.

Документация

Страница руководства Linux задумана как контролирующий и авторитетный исходный документ для понимания того, как работает bash, а руководство GNU более удобно для чтения. «Вы также можете найти информацию о Bash, запустив info bash... или просмотрев /usr/share/doc/bash/, /usr/local/share/doc/bash/или аналогичные каталоги в вашей системе. Краткую сводку можно получить, запустив bash --help. [84] » «У сопровождающего также есть страница Bash, на которой есть часто задаваемые вопросы Вопросы. [85] «Как стандарт, на котором основан bash, POSIX.1-2017 также очень информативен. Информацию о встроенных командах оболочки можно найти, выполнив их help или help [builtin name]в командной строке терминала, где установлен bash.

История выпусков

Смотрите также

Рекомендации

  1. Гамильтон, Наоми (30 мая 2008 г.). «Аризона языков программирования: BASH/Bourne-Again Shell». Компьютерный мир . Архивировано из оригинала 8 ноября 2016 года . Проверено 1 марта 2022 г.
  2. Рэми, Чет (20 апреля 2021 г.). «Оболочка GNU Bourne-Again». Услуги технологической инфраструктуры . Университет Кейс Вестерн Резерв . Проверено 1 марта 2022 г.
  3. ^ "bash-5.2.21.tar.gz". 9 ноября 2023 г. . Проверено 9 ноября 2023 г.
  4. ^ «Часто задаваемые вопросы по Bash, версия 4.14» . Архивировано из оригинала 1 сентября 2018 года . Проверено 9 апреля 2016 г.
  5. ^ «Отсутствует исходный код — соответствие GPL? · Проблема № 107 · Microsoft/WSL» . Гитхаб . Архивировано из оригинала 24 сентября 2019 года . Проверено 8 июля 2016 г.
  6. ^ "GNU Баш". Софтпедия . СофтНьюс. 23 января 2010 года. Архивировано из оригинала 21 октября 2017 года . Проверено 9 апреля 2016 г.
  7. ^ ab «Альтернатива настольному компьютеру». Форбс .
  8. ^ «Приложение A: Использование оболочки командной строки BeOS» . testou.free.fr .
  9. ^ «Терминал».
  10. ^ Проект GNU . «Файл README». Архивировано из оригинала 26 апреля 2019 года . Проверено 16 апреля 2014 г. Bash — это бесплатное программное обеспечение, распространяемое на условиях Стандартной общественной лицензии [GNU], опубликованной Фондом свободного программного обеспечения, версия 3 лицензии (или любой более поздней версии).
  11. ^ "Баш-1.11". сайт oldlinux.org . См. test.c для GPL-2.0 или более поздней версии.
  12. ^ "bash-1.05.tar". сайт oldlinux.org .
  13. ^ abc "BashFAQ/061 - Вики Грега" . mywiki.wooledge.org . Архивировано из оригинала 2 марта 2021 года . Проверено 1 марта 2021 г.
  14. ^ «Есть ли способ загрузить предположительно первоначальный исходный код bash bash-0.99?». unix.stackexchange.com .
  15. ^ abc Ричард Столлман (переправлено с комментариями Чета Рэми) (10 февраля 1988 г.). «GNU + BSD = ?». Группа новостей : comp.unix.questions. Usenet:  [email protected]. Архивировано из оригинала 28 декабря 2021 года . Проверено 28 декабря 2021 г. В течение полутора лет оболочка GNU была «почти готова». Автор неоднократно давал обещания выполнить то, что он сделал, но так и не сдержал их. В конце концов я больше не мог поверить, что он когда-нибудь что-нибудь доставит. Итак, сотрудник Фонда Брайан Фокс сейчас реализует имитацию оболочки Bourne.
  16. ^ Гамильтон, Наоми (30 мая 2008 г.), «Языки программирования: BASH/Bourne-Again Shell», Computerworld : 2, заархивировано из оригинала 6 июля 2011 г. , получено 21 марта 2011 г. , Когда Ричард Столлман решил Чтобы создать полную замену тогдашним обремененным системам Unix, он знал, что в конечном итоге ему придется заменить все распространенные утилиты, особенно стандартную оболочку, и эти замены должны будут иметь приемлемую лицензию.Исходная ссылка на компьютерный мир.com.au не работает: см. также копии оригинального материала на сайтах readthedocs.io, Computerworld.com.au и Университета Южной Каролины.
  17. ^ «Я почти получил редактор и компилятор Linux» . Доктор Добб . Архивировано из оригинала 2 марта 2021 года . Проверено 12 сентября 2020 г.
  18. Ричард Столлман (12 ноября 2010 г.). «О проекте GNU». Фонд свободного программного обеспечения . Архивировано из оригинала 24 апреля 2011 года . Проверено 13 марта 2011 г.«Bourne Again Shell» — это игра от имени Bourne Shell , которое было обычной оболочкой в ​​Unix.
  19. Гаттол, Маркус (13 марта 2011 г.), Bourne-again Shell, заархивировано из оригинала 9 марта 2011 г. , получено 13 марта 2011 г. , Название представляет собой каламбур от названия оболочки Bourne (sh), ранний вариант и важная оболочка Unix, написанная Стивеном Борном и распространявшаяся вместе с версией 7 Unix примерно в 1978 году, а также концепция «рождения заново».
  20. ^ ab Брайан Фокс (пересланный Леонардом Х. Тауэром-младшим) (8 июня 1989 г.). «Bash находится в бета-версии!». Группа новостей : gnu.announce. Архивировано из оригинала 4 мая 2013 года . Проверено 28 октября 2010 г.
  21. ^ Торвальдс, Линус Бенедикт (август 1991 г.). "comp.os.minix" . Проверено 6 сентября 2009 г. В настоящее время я портировал bash(1.08) и gcc(1.40), и, похоже, все работает.
  22. ^ «Как установить инструмент командной строки оболочки Bash в Windows 10» . 28 сентября 2016. Архивировано из оригинала 20 ноября 2016 года . Проверено 20 ноября 2016 г.
  23. Хоффман, Крис (30 июля 2021 г.). «Как установить подсистему Windows для Linux в Windows 11». Как компьютерщик . Проверено 12 октября 2022 г.
  24. ^ «Изменения функций пользовательской среды» . Оракул. Архивировано из оригинала 12 июня 2018 года . Проверено 8 июня 2018 г.
  25. ↑ Аб Уоррен, Том (4 июня 2019 г.). «Apple заменяет bash на zsh в качестве оболочки по умолчанию в macOS Catalina». Грань . Архивировано из оригинала 10 июня 2019 года . Проверено 13 июня 2019 г.
  26. ↑ Аб Хьюз, Мэтью (4 июня 2019 г.). «Почему macOS Catalina использует Zsh вместо Bash? Лицензирование». Следующая сеть . Архивировано из оригинала 31 декабря 2020 года . Проверено 12 января 2021 г.
  27. Шазелас, Стефан (4 октября 2014 г.). «Архивы списков рассылки oss-sec». Сайт Seclists.org . Архивировано из оригинала 6 октября 2014 года . Проверено 4 октября 2014 г.
  28. Лейден, Джон (24 сентября 2014 г.). «Обновите Bash СЕЙЧАС: ошибка «Shell Shock» широко раскрывает системы OS X и Linux» . Регистр . Архивировано из оригинала 16 октября 2014 года . Проверено 25 сентября 2014 г.
  29. Перлрот, Николь (25 сентября 2014 г.). «Эксперты по безопасности ожидают, что программная ошибка Shellshock в Bash будет серьезной». Нью-Йорк Таймс . Архивировано из оригинала 5 апреля 2019 года . Проверено 25 сентября 2014 г.
  30. Зельцер, Ларри (29 сентября 2014 г.). «Shellshock заставляет Heartbleed выглядеть незначительным». ЗДНет . Архивировано из оригинала 14 мая 2016 года.
  31. ^ Брайан Фокс (29 августа 1996 г.),shell.c, Free Software Foundation , заархивировано из оригинала 28 сентября 2018 г. , получено 1 ноября 2010 г. , Дата рождения: воскресенье, 10 января 1988 г. Первоначальный автор: Брайан Фокс
  32. Ричард Столлман (3 октября 2010 г.). «О проекте GNU». Фонд свободного программного обеспечения . Архивировано из оригинала 24 апреля 2011 года . Проверено 21 марта 2011 г. Сотрудники Фонда свободного программного обеспечения написали и поддерживают ряд программных пакетов GNU. Двумя примечательными из них являются библиотека C и оболочка. … Мы финансировали разработку этих программ, потому что проект GNU касался не только инструментов или среды разработки. Нашей целью была полноценная операционная система, и для этой цели были необходимы эти программы.
  33. ^ Лен ([email protected]) (20 апреля 1993 г.). «Бюллетень GNU, январь 1993 г.». Группа новостей : gnu.announce. Usenet:  [email protected]. Архивировано из оригинала 2 марта 2021 года . Проверено 28 октября 2010 г.
  34. ^ Рэми, Чет (1 августа 1994 г.). «Bash — оболочка GNU (Размышления и извлеченные уроки)». Linux-журнал . Архивировано из оригинала 5 декабря 2008 года . Проверено 13 ноября 2008 г.
  35. ^ Чет Рэми (31 октября 2010 г.), Даты в интервью вашего Computerworld, заархивировано из оригинала 20 июля 2012 г. , получено 31 октября 2010 г.
  36. ^ Чет Рэми (12 июня 1989 г.). «Исправления и улучшения Bash 0.99». Группа новостей : gnu.bash.bug. Архивировано из оригинала 10 ноября 2012 года . Проверено 1 ноября 2010 г.
  37. Чет Рэми (24 июля 1989 г.). «Некоторые исправления bash-1.02». Группа новостей : gnu.bash.bug. Архивировано из оригинала 10 ноября 2012 года . Проверено 30 октября 2010 г.
  38. Брайан Фокс (2 марта 1990 г.). «Наличие bash 1.05». Группа новостей : gnu.bash.bug. Архивировано из оригинала 10 ноября 2012 года . Проверено 30 октября 2010 г.
  39. ^ Бреснахан, Кристина; Блюм, Ричард (апрель 2015 г.). CompTIA Linux+ Powered by Linux Professional Institute Учебное пособие: экзамен LX0-103 и экзамен LX0-104 (3-е изд.). John Wiley & Sons, Inc. с. 5. ISBN 978-1-119-02122-3. Архивировано из оригинала 2 марта 2021 года . Проверено 6 июня 2016 г. В Linux большинство пользователей используют bash, потому что это самая популярная оболочка.
  40. ^ Данеш, Арман; Джанг, Майкл (февраль 2006 г.). Освоение Linux. John Wiley & Sons, Inc. с. 363. ИСБН 978-0-7821-5277-7. Архивировано из оригинала 2 марта 2021 года . Проверено 6 июня 2016 г. Оболочка Bourne Again (bash) — наиболее распространенная оболочка, устанавливаемая в дистрибутивах Linux.
  41. ^ Фостер-Джонсон, Эрик; Уэлч, Джон К.; Андерсон, Мика (апрель 2005 г.). Начало написания сценариев оболочки. John Wiley & Sons, Inc. с. 6. ISBN 978-0-7645-9791-6. Архивировано из оригинала 2 марта 2021 года . Проверено 6 июня 2016 г. Bash на сегодняшний день является самой популярной оболочкой и является оболочкой по умолчанию в системах Linux и Mac OSX.
  42. ^ «Используйте zsh в качестве оболочки по умолчанию на вашем Mac — Служба поддержки Apple». Архивировано из оригинала 2 декабря 2019 года . Проверено 1 июля 2019 г.
  43. ^ «Установка новых пакетов GNV». Архивировано из оригинала 3 октября 2020 года . Проверено 4 сентября 2020 г.
  44. ^ «Подсистемы совместимости». Архивировано из оригинала 23 сентября 2020 года . Проверено 4 сентября 2020 г.
  45. Джулиана, Чино (10 июня 2017 г.). «Статус выхода Linux bash и как установить статус выхода в bash - Techolac». Архивировано из оригинала 21 июня 2019 года . Проверено 21 июня 2019 г.
  46. Хузайфа Сидхпурвала (24 сентября 2014 г.). «Атака с внедрением кода с помощью специально созданных переменных среды Bash». Красная Шапка . Архивировано из оригинала 25 сентября 2014 года . Проверено 25 сентября 2014 г.
  47. ^ «Расширение скобок (Справочное руководство Bash)» . www.gnu.org . Проверено 10 января 2024 г.
  48. ^ «Справочное руководство Bash» . www.gnu.org . Архивировано из оригинала 15 марта 2018 года . Проверено 27 марта 2018 г.
  49. ^ «Отладка сценариев Bash». tldp.org . Архивировано из оригинала 4 ноября 2018 года . Проверено 20 ноября 2018 г.
  50. ^ «Встроенная функция Set (Справочное руководство Bash)» . www.gnu.org . Проверено 10 января 2024 г.
  51. ^ «Изменения Bash [Bash Hackers Wiki (DEV 20200708T2203)]» . wiki-dev.bash-hackers.org . Архивировано из оригинала 23 сентября 2019 года . Проверено 23 сентября 2019 г.
  52. ^ «Встроенные функции Bourne Shell (Справочное руководство Bash)» . www.gnu.org . Проверено 10 января 2024 г.
  53. ^ «Справочное руководство Bash» . www.gnu.org . Архивировано из оригинала 15 сентября 2019 года . Проверено 15 сентября 2019 г.
  54. ^ «Более продуктивная работа с bash 2.x/3.x» . www.caliban.org . Архивировано из оригинала 29 июня 2018 года . Проверено 21 июня 2018 г.
  55. ^ «6.11 Bash POSIX Mode», Справочное руководство GNU Bash, для Bash, версия 4.1, 23 декабря 2009 г., заархивировано из оригинала 3 декабря 2010 г. , получено 26 октября 2010 г.
  56. ^ «Расширенное руководство по написанию сценариев Bash». www.tldp.org . Раздел 37.2 (Bash, версия 3). Архивировано из оригинала 5 мая 2017 года . Проверено 5 марта 2017 г.
  57. ^ «Баш, версия 4». tldp.org . Архивировано из оригинала 1 июля 2018 года . Проверено 25 июня 2018 г.
  58. ^ «Массивы (Справочное руководство Bash)» . www.gnu.org . Архивировано из оригинала 11 июля 2018 года . Проверено 4 июля 2018 г.
  59. ^ «macos — обновить bash до версии 4.0 для OSX» . Спросите другое . Архивировано из оригинала 25 июня 2018 года . Проверено 25 июня 2018 г.
  60. ^ аб Мендель Купер. «Проблемы переносимости». Проект документации Linux . ibiblio.org. Архивировано из оригинала 27 января 2012 года . Проверено 26 января 2012 г.
  61. ^ ab «10. Файлы». Руководство по политике Debian v4.5.0.2 . Архивировано из оригинала 12 мая 2020 года . Проверено 11 мая 2020 г.
  62. ^ «Как форматировать дату и время в Linux, MacOS и Bash?». Советы по ракушкам! . Архивировано из оригинала 3 июня 2020 года . Проверено 3 июня 2020 г.
  63. ^ checkbashisms(1)  -  Руководство по общим командам Linux.
  64. ^ shellcheck(1)  -  Руководство по общим командам Linux.
  65. ^ «Портативная оболочка». Автоконф . Архивировано из оригинала 2 марта 2021 года . Проверено 20 января 2020 г.
  66. ^ "Справка по BASH - Учебное пособие по Bash" . Hypexr.org. 5 октября 2012 г. Архивировано из оригинала 2 марта 2021 г. Проверено 21 июля 2013 г.
  67. ^ «Справочное руководство Bash» . www.gnu.org . Архивировано из оригинала 15 марта 2018 года . Проверено 27 марта 2018 г.
  68. ^ bashbug(1). Архивировано 2 октября 2018 г., в Wayback Machine , die.net.
  69. ^ «Команда Linux/Unix: bashbug». Архивировано 6 октября 2014 г., на Wayback Machine , apple.com.
  70. ^ «Справочное руководство Bash» . tiswww.case.edu .
  71. ^ «Более продуктивная работа с bash 2.x/3.x» . www.caliban.org . Архивировано из оригинала 29 июня 2018 года . Проверено 21 июня 2018 г.
  72. ^ "Индекс /gnu/bash". ftp.swin.edu.au. _ Архивировано из оригинала 8 марта 2020 года . Проверено 15 сентября 2019 г.
  73. ^ ab «Введение в программируемое завершение». tldp.org . Проверено 21 января 2022 г.
  74. ^ «Определение BORN-AGAIN» . www.merriam-webster.com . Проверено 9 января 2024 г.
  75. ^ "Bash - Проект GNU - Фонд свободного программного обеспечения" . www.gnu.org . Проверено 10 января 2024 г.
  76. ^ «Что такое Bash? (Справочное руководство Bash)» . www.gnu.org . Проверено 9 января 2024 г.
  77. ^ «Определение BASH». www.merriam-webster.com . 5 января 2024 г. . Проверено 9 января 2024 г.
  78. ^ "BashGuide/Массивы - Вики Грега" . mywiki.wooledge.org . Проверено 10 января 2024 г.
  79. ^ "CommandSubstitution - Wiki Грега" . mywiki.wooledge.org . Проверено 10 января 2024 г.
  80. ^ "BashGuide/TestsAndConditionals - Wiki Грега" . mywiki.wooledge.org . Проверено 10 января 2024 г.
  81. ^ «ИЗМЕНЕНИЯ — bash.git — bash» . git.savannah.gnu.org . Проверено 10 января 2024 г.
  82. ^ «Изменения Bash [Bash Hackers Wiki]» . 14 февраля 2021 года. Архивировано из оригинала 14 февраля 2021 года . Проверено 10 января 2024 г.
  83. ^ «Устаревший и устаревший синтаксис [Bash Hackers Wiki]» . 11 февраля 2021 года. Архивировано из оригинала 11 февраля 2021 года . Проверено 10 января 2024 г.
  84. ^ "Bash - Проект GNU - Фонд свободного программного обеспечения" . www.gnu.org . Проверено 10 января 2024 г.
  85. ^ "Bash - Проект GNU - Фонд свободного программного обеспечения" . www.gnu.org . Проверено 10 января 2024 г.
  86. ^ "История версий github НОВОСТИ v5.0" . Гитхаб . Архивировано из оригинала 4 мая 2022 года . Проверено 1 марта 2021 г.
  87. ^ «Изменения Bash [Bash Hackers Wiki]» . Архивировано из оригинала 18 марта 2020 года . Проверено 25 ноября 2019 г.
  88. ^ «Доступна версия Bash-5.0» . lists.gnu.org . Архивировано из оригинала 8 ноября 2020 года . Проверено 1 марта 2021 г.

Внешние ссылки