Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Bash - это оболочка Unix и командный язык, написанный Брайаном Фоксом для проекта GNU в качестве бесплатной замены оболочки Bourne . [7] [8] Впервые выпущенный в 1989 году, [9] он использовался в качестве оболочки входа по умолчанию для большинства дистрибутивов Linux . [10] Также доступна версия для Windows 10 через подсистему Windows для Linux . [11] Это также оболочка пользователя по умолчанию в Solaris 11. [12]Bash также был оболочкой по умолчанию во всех версиях Apple macOS до выпуска macOS Catalina 2019 года , который изменил оболочку по умолчанию на zsh , хотя Bash в настоящее время остается доступным в качестве альтернативной оболочки. [13]

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

Название оболочки является аббревиатурой от Bourne Again Shell , каламбура от названия оболочки Bourne, которую она заменяет [14], и понятия «быть рожденным заново ». [15] [16]

Брешь в системе безопасности Bash, появившаяся в версии 1.03 (август 1989 г.) [17], получившая название Shellshock , была обнаружена в начале сентября 2014 г. и быстро привела к целому ряду атак через Интернет . [18] [19] [20] Патчи для исправления ошибок были доступны вскоре после того, как ошибки были обнаружены.

История [ править ]

Брайан Фокс начал кодировать Bash 10 января 1988 г. [21] после того, как Ричард Столлман был недоволен отсутствием прогресса, достигнутого предыдущим разработчиком. [7] Столлман и Фонд свободного программного обеспечения (FSF) рассматривали бесплатную оболочку, которая могла бы запускать существующие сценарии оболочки, настолько стратегически важной по отношению к полностью бесплатной системе, построенной из кода BSD и GNU, что это был один из немногих проектов, которые они финансировали сами, а компания Fox взяла на себя обязательство. работа сотрудником ФСПО. [7] [22] Fox выпустила бета-версию Bash версии .99 8 июня 1989 г. [9] и оставалась основным сопровождающим до середины 1992 [23] и середины 1994 года.[24], когда он был уволен из FSF [25], и его ответственность была передана другому раннему участнику, Чету Рэми. [26] [27] [28]

С тех пор Bash стал самой популярной оболочкой среди пользователей Linux, став интерактивной оболочкой по умолчанию в различных дистрибутивах этой операционной системы [29] [30] (хотя оболочка Almquist может быть оболочкой сценариев по умолчанию) и в выпусках MacOS от Apple. перед тем Каталина в октябре 2019 года [31] [32] [10] Bash также была портирована на Microsoft Windows и распространяется с Cygwin и MinGW , в DOS по DJGPP проект, Novell NetWare , чтобы OpenVMS проекта GNV, [33 ] кArcaOS , [34] и Android через различные приложения эмуляции терминала.

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

Особенности [ править ]

Синтаксис команды Bash - это надмножество синтаксиса команд оболочки Bourne. Bash поддерживает раскрытие скобок , завершение командной строки (программируемое завершение), [37] базовую отладку [38] и обработку сигналов (использование trap), начиная с bash 2.05a [39] среди других функций. Bash может выполнять подавляющее большинство сценариев оболочки Bourne без изменений, за исключением сценариев оболочки Bourne, которые сталкиваются с поведением внешнего синтаксиса, по-разному интерпретируемым в Bash, или пытаются запустить системную команду, соответствующую более новой встроенной программе Bash, и т. Д. Синтаксис команд Bash включает в себя нарисованные идеи. из KornShell (ksh) иС оболочки (CSH) , такие как редактирование командной строки, история команд ( historyкоманды), [40] стек каталогов, то $RANDOMи $PPIDпеременные, и POSIX подстановки команд синтаксиса $(…).

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

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

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

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

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

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

Расширение скобок [ править ]

Подстановка скобок, называемая также чередованием, это функция копируется из оболочки 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 не дает таких же результатов.

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

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

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

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

$ Эхо  { 1 ..10 } 1 2 3 4 5 6 7 8 9 10 $ эхо - файла { 1 ..4 } .txt file1.txt file2.txt file3.txt file4.txt $ эхо  { a..e } ABCDE $ echo  { 1 ..10..3 } 1 4 7 10 $ echo  { a..j..3 } adgj

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

$ start = 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, совместимого с устаревшими версиями [ править ]

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

[ -r ~ / .profile ]  && . ~ / .profile # один раз настраивать среду, синтаксис Bourne-sh только if  [ -n " $ PS1 "  ]  ;  then  # мы интерактивны?  [ -r ~ / .bashrc ]  && . ~ / .bashrc # tty / prompt / настройка функции для интерактивных оболочек  [ -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 .

Переносимость [ править ]

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

  • Некоторые расширенные параметры вызова
  • Расширение скобы
  • Массивы и ассоциативные массивы
  • [[ ... ]]Расширенная тестовая конструкция с двойной скобкой и соответствие ее регулярному выражению
  • Двойные скобки арифметико-оценка конструкция (только (( ... )); $(( ... ))это POSIX)
  • Некоторые операции со строками при раскрытии параметров
  • local для переменных с ограниченным объемом
  • Замена процесса
  • Специфичные для Bash встроенные команды
  • Сопроцессы
  • Переменные $ EPOCHSECONDS и $ EPOCHREALTIME [51]

Если часть кода использует такую ​​возможность, это называется «башизмом» - проблемой для портативного использования. Можно использовать Debian checkbashismsи Vidar Holen, shellcheckчтобы убедиться, что сценарий не содержит этих частей. [52] [53] Список изменяется в зависимости от фактической оболочки мишени: политика Debian позволяет некоторым расширения в своих сценариях (как в dash), [50] в то время как сценарий намерен поддерживать предварительно POSIX Bourne оболочки, как Autoconf «s configure, еще более ограничены в возможностях, которые они могут использовать. [54]

Сочетания клавиш [ править ]

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

Управление процессами [ править ]

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

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

command1 ; command2

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

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

command1 &

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

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

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

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

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

$ jobs [1] - Запуск command1 & [2] + Stopped command2

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

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

убить % 1

Условное исполнение [ править ]

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

cd  " $ SOMEWHERE "  && ./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 (или, необязательно, на другие адреса электронной почты). [57] [58]

Программируемое завершение [ править ]

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

История выпусков [ править ]

См. Также [ править ]

  • Сравнение командных оболочек

Ссылки [ править ]

  1. ^ "Индекс / gnu / bash" . ftp.gnu.org . Проверено 8 декабря 2020 года .
  2. ^ Рэми, Chet (7 декабря 2020). «Доступен релиз Баш-5.1» . lists.gnu.org . Проверено 8 декабря 2020 года .
  3. ^ «Bash FAQ, версия 4.14» . Архивировано из оригинала на 1 сентября 2018 года . Проверено 9 апреля 2016 года .
  4. ^ «Отсутствует исходный код - соответствие GPL? · Проблема № 107 · Microsoft / WSL» . GitHub . Архивировано 24 сентября 2019 года . Проверено 8 июля, 2016 .
  5. ^ "GNU Bash" . Софтпедия . SoftNews. Архивировано 21 октября 2017 года . Проверено 9 апреля 2016 года .
  6. ^ Проект GNU . "README файл" . Архивировано 26 апреля 2019 года . Проверено 16 апреля 2014 года . Bash - это бесплатное программное обеспечение, распространяемое в соответствии с условиями Стандартной общественной лицензии [GNU], опубликованной Free Software Foundation, версия 3 лицензии (или любая более поздняя версия).
  7. ^ a b c Ричард Столлман (отправлено с комментариями Четом Рэми) (10 февраля 1988 г.). "GNU + BSD =?" . Группа новостейcomp.unix.questions . Usenet: [email protected] . Архивировано 7 ноября 2012 года . Проверено 22 марта 2011 года . В течение полутора лет оболочка GNU была «почти готова». Автор неоднократно обещал выполнить то, что он сделал, но никогда не сдерживал их. В конце концов я больше не мог поверить, что он когда-нибудь что-нибудь доставит. Итак, сотрудник Фонда Брайан Фокс сейчас реализует имитацию оболочки Борна. 
  8. Гамильтон, Наоми (30 мая 2008 г.), «Азия языков программирования: BASH / Bourne-Again Shell» , Computerworld : 2, заархивировано из оригинала 6 июля 2011 г. , получено 21 марта 2011 г. , когда Ричард Столлман решил Он знал, что для создания полной замены тогда перегруженных систем Unix ему потребуются замены для всех общих утилит, особенно для стандартной оболочки, и эти замены должны иметь приемлемую лицензию.
  9. ^ a b Брайан Фокс (направлен Леонардом Х. Тауэром-младшим) (8 июня 1989 г.). "Bash находится в стадии бета-версии!" . Группа новостейgnu.announce . Архивировано 4 мая 2013 года . Проверено 28 октября 2010 года .
  10. ^ a b Уоррен, Том (4 июня 2019 г.). «Apple заменяет bash на zsh в качестве оболочки по умолчанию в macOS Catalina» . Грань . Архивировано 10 июня 2019 года . Проверено 13 июня 2019 года .
  11. ^ «Как установить инструмент командной строки оболочки Bash в Windows 10» . 28 сентября 2016 года. Архивировано 20 ноября 2016 года . Проверено 20 ноября, 2016 .
  12. ^ «Изменения функций пользовательской среды» . Oracle. Архивировано 12 июня 2018 года . Проверено 8 июня 2018 года .
  13. ^ a b Хьюз, Мэтью (4 июня 2019 г.). «Почему macOS Catalina использует Zsh вместо Bash? Лицензирование» . Следующая Сеть . Архивировано 31 декабря 2020 года . Проверено 12 января 2021 года .
  14. ^ «Я почти получил редактор и компилятор Linux» . Доктора Добба . Архивировано 2 марта 2021 года . Проверено 12 сентября 2020 года .
  15. Ричард Столмен (12 ноября 2010 г.). «О проекте GNU» . Фонд свободного программного обеспечения . Архивировано 24 апреля 2011 года . Проверено 13 марта 2011 года . «Bourne Again Shell» - это игра имени Bourne Shell , которая была обычной оболочкой в ​​Unix.
  16. ^ Gattol, Markus (13 марта 2011), Bourne-Again Shell , архивируются с оригинала на 9 марта 2011 года , получен 13 March, 2011 , название каламбур на имя Bourne оболочки (ш), ранний и важная оболочка Unix, написанная Стивеном Борном и распространяемая вместе с версией 7 Unix около 1978 года, и концепция «рождения свыше».
  17. ^ Chazelas, Stephane (4 октября 2014). "архивы списков рассылки oss-sec" . Seclists.org . Архивировано 6 октября 2014 года . Проверено 4 октября 2014 года .
  18. Лейден, Джон (24 сентября 2014 г.). «Патч Bash СЕЙЧАС: ошибка Shell Shock широко раскрывает системы OS X и Linux» . Реестр . Архивировано 16 октября 2014 года . Проверено 25 сентября 2014 года .
  19. ^ Perlroth, Николь (25 сентября 2014). «Эксперты по безопасности ожидают, что программная ошибка Shellshock в Bash будет значительной» . Нью-Йорк Таймс . Архивировано 5 апреля 2019 года . Проверено 25 сентября 2014 года .
  20. ^ Зельцер, Ларри (29 сентября 2014). «Shellshock делает Heartbleed незначительным» . ZDNet . Архивировано из оригинального 14 мая 2016 года.
  21. ^ Брайан Фокс (29 августа 1996), shell.c , Фонд свободного программного обеспечения , в архиве с оригинала на 28 сентября 2018 года , получен 1 ноября 2010 , Дата рождения: воскресенье, 10 января, 1988. Первоначальный автор: Brian Fox
  22. Ричард Столмен (3 октября 2010 г.). «О проекте GNU» . Фонд свободного программного обеспечения . Архивировано 24 апреля 2011 года . Проверено 21 марта 2011 года . Сотрудники Free Software Foundation написали и обслуживают ряд программных пакетов GNU. Двумя примечательными из них являются библиотека C и оболочка. … Мы финансировали разработку этих программ, потому что проект GNU был не только об инструментах или среде разработки. Нашей целью была полноценная операционная система, и эти программы были необходимы для этой цели.
  23. ^ len (g ... @ Prep.ai.mit.edu) (20 апреля 1993 г.). "Бюллетень GNU за январь 1993 года" . Группа новостейgnu.announce . Usenet: [email protected] . Архивировано 2 марта 2021 года . Проверено 28 октября 2010 года . 
  24. ^ Рэми, Чет (1 августа 1994). «Bash - оболочка GNU (размышления и извлеченные уроки)» . Linux Journal . Архивировано 5 декабря 2008 года . Проверено 13 ноября 2008 года .
  25. Чет Рэми (31 октября 2010 г.), Даты в интервью Computerworld , заархивировано из оригинала 20 июля 2012 г. , получено 31 октября 2010 г.
  26. Чет Рэми (12 июня 1989 г.). «Исправления и улучшения Bash 0.99» . Группа новостейgnu.bash.bug . Архивировано 10 ноября 2012 года . Проверено 1 ноября 2010 года .
  27. Чет Рэми (24 июля 1989 г.). "Некоторые исправления в bash-1.02" . Группа новостейgnu.bash.bug . Архивировано 10 ноября 2012 года . Проверено 30 октября 2010 года .
  28. Брайан Фокс (2 марта 1990 г.). «Доступность bash 1.05» . Группа новостейgnu.bash.bug . Архивировано 10 ноября 2012 года . Проверено 30 октября 2010 года .
  29. ^ Бреснахан, Кристина; Блюм, Ричард (апрель 2015 г.). CompTIA Linux + Powered by Linux Учебное пособие профессионального института: экзамен LX0-103 и экзамен LX0-104 (3-е изд.). John Wiley & Sons, Inc. стр. 5. ISBN 978-1-119-02122-3. Архивировано 2 марта 2021 года . Проверено 6 июня, 2016 . В Linux большинство пользователей запускают bash, потому что это самая популярная оболочка.
  30. ^ Данеш, Арман; Янг, Майкл (февраль 2006 г.). Освоение Linux . John Wiley & Sons, Inc. стр. 363. ISBN. 978-0-7821-5277-7. Архивировано 2 марта 2021 года . Проверено 6 июня, 2016 . Bourne Again Shell (bash) - наиболее распространенная оболочка, устанавливаемая с дистрибутивами Linux.
  31. ^ Фостер-Джонсон, Эрик; Уэлч, Джон С .; Андерсон, Мика (апрель 2005 г.). Начало написания сценария оболочки . John Wiley & Sons, Inc. стр. 6. ISBN 978-0-7645-9791-6. Архивировано 2 марта 2021 года . Проверено 6 июня, 2016 . Bash на сегодняшний день является самой популярной оболочкой и является оболочкой по умолчанию в системах Linux и Mac OSX.
  32. ^ «Используйте zsh в качестве оболочки по умолчанию на вашем Mac - служба поддержки Apple» . Архивировано 2 декабря 2019 года . Проверено 1 июля 2019 года .
  33. ^ «Установка новых пакетов GNV» . Архивировано 3 октября 2020 года . Проверено 4 сентября 2020 года .
  34. ^ «Подсистемы совместимости» . Архивировано 23 сентября 2020 года . Проверено 4 сентября 2020 года .
  35. Джулиана, Чино (10 июня 2017 г.). «Статус выхода Linux bash и как установить статус выхода в bash - Techolac» . Архивировано 21 июня 2019 года . Проверено 21 июня 2019 года .
  36. ^ Huzaifa Sidhpurwala (24 сентября 2014). «Атака путем внедрения кода специально созданных переменных среды Bash» . Красная шляпа . Архивировано 25 сентября 2014 года . Проверено 25 сентября 2014 года .
  37. ^ "Справочное руководство по Bash" . www.gnu.org . Архивировано 15 марта 2018 года . Проверено 27 марта 2018 года .
  38. ^ «Отладка сценариев Bash» . tldp.org . Архивировано 4 ноября 2018 года . Проверено 20 ноября 2018 года .
  39. ^ "Изменения Bash [Bash Hackers Wiki (DEV 20200708T2203)]" . wiki-dev.bash-hackers.org . Архивировано 23 сентября 2019 года . Проверено 23 сентября 2019 года .
  40. ^ "Справочное руководство по Bash" . www.gnu.org . Архивировано 15 сентября 2019 года . Проверено 15 сентября 2019 года .
  41. ^ "Более продуктивная работа с bash 2.x / 3.x" . www.caliban.org . Архивировано 29 июня 2018 года . Проверено 21 июня 2018 года .
  42. ^ "6.11 Bash POSIX Mode" , Справочное руководство GNU Bash, для Bash, версия 4.1 , 23 декабря 2009 г., заархивировано из оригинала 3 декабря 2010 г. , получено 26 октября 2010 г.
  43. ^ "Расширенное руководство по сценариям на Bash" . www.tldp.org . Раздел 37.2 (Bash, версия 3). Архивировано 5 мая 2017 года . Проверено 5 марта 2017 года .
  44. ^ Комиссия по двухсотлетию Конституции Соединенных Штатов. Коллекция Линкольнианы Фрэнка и Вирджинии Уильямс (Государственный университет Миссисипи. Библиотеки). Верховный суд Соединенных Штатов: его начало и его судьи, 1790–1991 . OCLC 25546099 . Архивировано 2 марта 2021 года . Проверено 12 сентября 2020 года . 
  45. ^ "Bash, версия 4" . tldp.org . Архивировано 1 июля 2018 года . Проверено 25 июня 2018 года .
  46. ^ " Список литературы" , Диагностическое Ссылка Индекс клинической неврологии , Elsevier, стр реф-1a-реф-70, 1986,. Дои : 10.1016 / b978-0-409-90016-3.50033-9 , ISBN 978-0-409-90016-3, заархивировано из оригинала 2 марта 2021 г. , получено 12 сентября 2020 г.
  47. ^ "Массивы (Справочное руководство Bash)" . www.gnu.org . Архивировано 11 июля 2018 года . Проверено 4 июля 2018 года .
  48. ^ «macos - Обновите bash до версии 4.0 в OSX» . Спросите другого . Архивировано 25 июня 2018 года . Проверено 25 июня 2018 года .
  49. ^ a b Мендель Купер. «Проблемы переносимости» . Проект документации Linux . ibiblio.org. Архивировано 27 января 2012 года . Проверено 26 января 2012 года .
  50. ^ a b «10. Файлы» . Руководство по политике Debian, версия 4.5.0.2 . Архивировано 12 мая 2020 года . Проверено 11 мая 2020 года .
  51. ^ "Как форматировать дату и время в Linux, MacOS и Bash?" . Советы Shell! . Архивировано 3 июня 2020 года . Проверено 3 июня 2020 года .
  52. ^ checkbashisms(1)  -  Руководство по основным командам Linux
  53. ^ shellcheck(1)  -  Руководство по основным командам Linux
  54. ^ "Portable Shell" . Autoconf . Архивировано 2 марта 2021 года . Проверено 20 января 2020 года .
  55. ^ "Помощь BASH - Учебное пособие по Bash" . Hypexr.org. 5 октября 2012 года. Архивировано 2 марта 2021 года . Проверено 21 июля 2013 года .
  56. ^ "Справочное руководство по Bash" . www.gnu.org . Архивировано 15 марта 2018 года . Проверено 27 марта 2018 года .
  57. ^ bashbug (1) Архивировано 2 октября 2018 г., на Wayback Machine , die.net.
  58. ^ «Linux / Unix Command: bashbug». Архивировано 6 октября 2014 г. на Wayback Machine , apple.com.
  59. ^ "Справочное руководство по Bash" . tiswww.case.edu .
  60. ^ "Более продуктивная работа с bash 2.x / 3.x" . www.caliban.org . Архивировано 29 июня 2018 года . Проверено 21 июня 2018 года .
  61. ^ "Индекс / gnu / bash" . ftp.swin.edu.au . Архивировано 8 марта 2020 года . Проверено 15 сентября 2019 года .
  62. ^ "BashFAQ / 061 - Вики Грега" . mywiki.wooledge.org . Архивировано 2 марта 2021 года . Проверено 1 марта 2021 года .
  63. ^ "НОВОСТИ истории версий github v5.0" . GitHub . Архивировано 10 сентября 2020 года . Проверено 1 марта 2021 года .
  64. ^ "Архивная копия" . Архивировано 18 марта 2020 года . Проверено 25 ноября 2019 года .CS1 maint: archived copy as title (link)
  65. ^ "Доступен выпуск Bash-5.0" . lists.gnu.org . Архивировано 8 ноября 2020 года . Проверено 1 марта 2021 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Интервью 2008 года с сопровождающим GNU Bash Четом Рэми