Bash (оболочка Unix)
Оригинальный автор(ы) | Брайан Фокс |
---|---|
Разработчик(и) | Chet Ramey |
Первоначальный выпуск | 8 июня 1989 г |
Стабильная версия | 5.2.21 [1] / 9 ноября 2023 г. |
Репозиторий | |
Написано в | С |
Операционная система |
|
Платформа | ГНУ |
Доступно в | Многоязычный ( gettext ) |
Тип | Оболочка (вычисления) , оболочка Unix , командный язык |
Лицензия | Начиная с версии 4.0: GPL-3.0 или новее , 1.11? до 3.2: GPL-2.0 или новее , 0,99? до 1.05?: GPL-1.0 или новее |
Веб-сайт | www |
Bash , сокращение от Bourne-Again SHell , — это оболочка программа- и командный язык, поддерживаемый Фондом свободного программного обеспечения. [2] и впервые разработан для проекта GNU [3] Фокс Брайан . [4] Разработан как 100% [5] бесплатная программная альтернатива оболочке Bourne , [6] [7] [8] Первоначально он был выпущен в 1989 году. [9] Его название представляет собой игру слов, отсылающую как к его предшественнику, оболочке Bourne, так и к его предшественнику. [10] и концепция возрождения . [11] [12]
С момента своего создания Bash получил широкое распространение и широко используется в качестве оболочки входа по умолчанию во многих дистрибутивах Linux . Она имеет историческое значение как одна из первых программ, портированных на Linux Линусом Торвальдсом наряду с компилятором GNU ( GCC ). [13] Он доступен практически во всех современных операционных системах, что делает его универсальным инструментом в различных вычислительных средах.
Как командный процессор , Bash работает в текстовом окне , где пользователи вводят команды для выполнения различных задач. Он также поддерживает выполнение команд из файлов, известных как сценарии оболочки , что упрощает автоматизацию . В соответствии с соглашениями оболочки Unix , Bash включает богатый набор функций. Ключевые слова , синтаксис , переменные с динамической областью действия и другие основные функции языка скопированы из файла. sh
. Другие функции, например история , копируются из csh
и ksh
. Bash — это POSIX -совместимая оболочка, но с рядом расширений.
История
[ редактировать ]Хотя bash считается Unix-подобным, [14] он также доступен на macOS, Windows, BeOS, [15] [16] и Хайку. [17]
Брайан Фокс начал программировать Bash 10 января 1988 года. [18] после того, как Ричард Столлман был недоволен отсутствием прогресса со стороны предыдущего разработчика. [7] Столлман и FSF рассматривали бесплатную оболочку, которая могла бы запускать существующие сценарии оболочки, настолько стратегически важную для полностью свободной системы, построенной на основе кода BSD и GNU, что это был один из немногих проектов, которые они финансировали сами, а Фокс взял на себя эту работу в качестве сотрудника FSF. [7] [19] Fox выпустила бета-версию Bash, версию .99, 8 июня 1989 года. [9] и оставался основным сопровождающим где-то между серединой 1992 года. [20] и середина 1994 года, [21] когда его уволили из FSF [22] и его ответственность была передана другому одному из первых участников, Чету Рэми. [23] [24] [25] [26] [27]
С тех пор Bash стала самой популярной оболочкой среди пользователей Linux, став интерактивной оболочкой по умолчанию в различных дистрибутивах этой операционной системы. [28] [29] и в выпусках Apple macOS до Catalina в октябре 2019 года. [30] [31] [32] Bash также был портирован на Microsoft Windows. [33] [34] и распространяется вместе с Cygwin и MinGW , в DOS в рамках проекта DJGPP , в Novell NetWare , в OpenVMS в рамках проекта GNU, [35] в АркаОС , [36] и на Android через различные приложения эмуляции терминала.
В сентябре 2014 года Стефан Шазелас, специалист по Unix/Linux, [37] обнаружил ошибку безопасности в программе. Ошибка, впервые обнаруженная 24 сентября, получила название Shellshock и получила номера CVE — 2014-6271 , CVE- 2014-6277 и CVE- 2014-7169 . Ошибка была расценена как серьезная, поскольку CGI- скрипты, использующие Bash, могли быть уязвимыми, делая возможным выполнение произвольного кода . Ошибка была связана с тем, как Bash передает определения функций подоболочкам через переменные среды . [38]
Функции
[ редактировать ]Как командный процессор , Bash работает в текстовом окне , где пользователи вводят команды для выполнения различных задач. Он также поддерживает выполнение команд из файлов, известных как сценарии оболочки , что упрощает автоматизацию . В соответствии с соглашениями оболочки Unix , Bash включает в себя богатый набор функций, в том числе:
- Интерфейс командной строки ;
- Структуры управления для проверки условий и итераций ;
- UNIX в стиле Конвейеры ;
- Подоболочки ;
- Коды состояния выхода ;
- Сигнализация как средство межпроцессного взаимодействия ;
- Асинхронное выполнение;
- оболочки Режим переносимости , в котором команды можно интерпретировать в соответствии со стандартом POSIX ;
- Призыв как...
- Интерактивная оболочка,
- Неинтерактивная оболочка или
- Оболочка входа;
- Разбор команды:
- Команды анализируются по одной строке за раз, учитывая обе
- Структуры контроля и
- Обратная косая черта ('\') с выходом концов строк (EOL),
- Разделение на слова (т.е. разбиение слов ) в соответствии с правилами цитирования ,
- Включая цитирование ANSI-C и
- Комментарии игнорируются: оба
- Комментарии в стиле Борна «#» (хэштег) и
- Комментарии в стиле Томпсона ':' (двоеточие);
- Над полученной строкой выполняется ряд расширений:
- Расширение брекетов,
- расширение тильды,
- параметров и переменных Расширение , включая
- Переменные с динамической областью видимости ,
- Индексированные массивы неограниченного размера и
- Ассоциативные массивы ,
- Замена команды ,
- Замена процесса ,
- Арифметическое разложение, в том числе
- Целочисленная арифметика по любому основанию от двух до шестидесяти четырех,
- Разделение слов (опять),
- Расширение пути,
- Т.е. подстановка и сопоставление с образцом , и
- Удаление цитаты ;
- Перенаправления входов, выходов и потоков данных об ошибках выполняются, в том числе
- Здесь документы ,
- Здесь строки ('<<<'), которые позволяют использовать параметры в качестве входных данных,
- Параметр «noclobber» (set -C), защищающий существующие файлы от перезаписи с помощью оператора перенаправления «>», и
- Синтаксис перенаправления для отмены такой защиты: '>|';
- Поиск имени команды выполняется в следующем порядке:
- команды Внутренние оболочки :
- Псевдонимы ,
- Зарезервированные слова Shell,
- Функции и
- встроенные команды ;
- команды Внешние по отношению к оболочке :
- Отдельные программы в стиле UNIX, такие как
ls
илиln
, и - Сценарии оболочки — файлы , содержащие исполняемые команды. (Сценарии оболочки не требуют компиляции перед выполнением и при соблюдении определенных требований их можно вызывать как команды, используя имя файла.)
- Отдельные программы в стиле UNIX, такие как
- команды Внутренние оболочки :
- Полученная строка выполняется как команда.
- Команды анализируются по одной строке за раз, учитывая обе
Баш также предлагает...
- Настраиваемая среда выполнения: [39]
- Файлы запуска оболочки и сеанса , такие как «~/.bashrc» и «~/.profile» (т. е. точечные файлы );
- Настройки (
set
встроенный ) и параметры оболочки (shopt
встроенные ), которые изменяют поведение оболочки; - Только при интерактивном вызове,
- неограниченного размера История команд ,
- Рабочие места и контроль работ ,
- Стек каталогов (см.
pushd
иpopd
встроенные), - Завершение вкладки ,
- Настраиваемые подсказки и
- Редактирование командной строки с помощью GNU readline ;
- Упрощенное ведение журнала для целей отладки (xtrace) и другие облегченные параметры отладки (errexit, noexec, nounset, Pipefail и т. д.);
- оболочки Режимы совместимости : bash 5.1 может работать так же, как если бы это был bash 4.2 и т. д.;
- Документация:
- Встроенный
help
команда, - Страница руководства и
- Информационная страница , аналогичная руководству GNU;
- Встроенный
- Неофициальные способы поддержки через:
- IRC на libera.chat #bash
- Списки рассылки по адресу https://www.gnu.org/software/bash/.
Ключевые слова , синтаксис , переменные с динамической областью действия и другие основные функции языка скопированы из sh . Другие функции, например, история , копируются из csh и ksh .
Bash Синтаксис команд является расширенным набором синтаксиса команд оболочки Bourne. Bash поддерживает расширение скобок , [40] завершение командной строки (программируемое завершение), [41] базовая отладка [42] [43] и обработка сигналов (с использованием trap
) начиная с bash 2.05a [44] [45] среди других особенностей. Bash может выполнять подавляющее большинство сценариев оболочки Bourne без изменений, за исключением сценариев оболочки Bourne, которые натыкаются на нестандартное синтаксическое поведение, интерпретируемое по-разному в Bash, или пытаются запустить системную команду, соответствующую более новой встроенной функции Bash, и т. д. Синтаксис команд Bash включает в себя нарисованные идеи. из Korn Shell (ksh) и оболочки C (csh), такие как редактирование командной строки, история команд ( history
команда), [46] стек каталогов, $RANDOM
и $PPID
переменные и подстановки команд POSIX. синтаксис $(...)
.
Когда пользователь нажимает клавишу табуляции в интерактивной командной оболочке, Bash автоматически использует завершение командной строки , начиная с бета-версии 2.04. [47] для сопоставления частично типизированных имен программ, имен файлов и имен переменных. Система завершения командной строки Bash очень гибкая и настраиваемая и часто включает в себя функции, которые дополняют аргументы и имена файлов для конкретных программ и задач.
Синтаксис Bash имеет множество расширений, которых нет в оболочке Bourne. Bash может выполнять целочисленные вычисления («арифметические вычисления») без запуска внешних процессов. Он использует ((...))
команда и $((...))
синтаксис переменных для этой цели. Его синтаксис упрощает перенаправление ввода-вывода . Например, он может перенаправить стандартный вывод (stdout) и стандартные ошибки (stderr), используя команду одновременно &>
оператор. Это проще вводить, чем эквивалент оболочки Bourne ' command > file 2>&1
'. Bash поддерживает замену процессов с помощью <(command)
и >(command)
синтаксис, который заменяет вывод (или ввод) команды, где обычно используется имя файла. (Это реализуется через безымянные каналы /proc/fd/ в системах, которые это поддерживают, или через временные именованные каналы , где это необходимо).
При использовании ключевого слова «функция» объявления функций Bash несовместимы со сценариями Bourne/Korn/POSIX (у KornShell возникает та же проблема при использовании «функции»), но Bash принимает тот же синтаксис объявления функций, что и оболочки Bourne и Korn. и является POSIX-совместимым. Из-за этих и других различий сценарии оболочки Bash редко выполняются под интерпретаторами оболочки Bourne или Korn, если только они не написаны специально с учетом этой совместимости, которая становится все менее распространенной по мере того, как Linux становится все более распространенным. Но в режиме POSIX Bash более точно соответствует POSIX. [48]
Bash поддерживает здесь документы . Начиная с версии 2.05b Bash может перенаправлять стандартный ввод (stdin) из «здесь строки», используя <<<
оператор.
внутри процесса, Bash 3.0 поддерживает сопоставление регулярных выражений используя синтаксис, напоминающий Perl . [49]
В феврале 2009 года [50] В Bash 4.0 появилась поддержка ассоциативных массивов . [51] Индексы ассоциативного массива представляют собой строки, аналогично AWK или Tcl . [52] Их можно использовать для эмуляции многомерных массивов. Bash 4 также меняет свою лицензию на GPL-3.0 или более позднюю версию ; некоторые пользователи подозревают, что именно это изменение лицензирования является причиной того, что macOS продолжает использовать более старые версии. [53] Zsh стала оболочкой по умолчанию в macOS с выпуском macOS Catalina в 2019 году. [54]
Расширение скобок
[ редактировать ]Расширение скобок, также называемое чередованием, — это функция, скопированная из C. оболочки Он генерирует набор альтернативных комбинаций. Сгенерированные результаты не обязательно должны существовать в виде файлов. Результаты каждой развернутой строки не сортируются, и сохраняется порядок слева направо:
$ echo a{p,c,d,b}eape ace ade abe$ echo {a,b,c}{d,e,f}ad ae af bd be bf cd ce cf
Пользователям не следует использовать расширения фигурных скобок в переносимых сценариях оболочки, поскольку оболочка Bourne не выдает такой же результат.
$ # bash shell$/bin/bash -c 'echo a{p,c,d,b}e'ape ace ade abe$ # A traditional shell does not produce the same output$ /bin/sh -c 'echo a{p,c,d,b}e'a{p,c,d,b}e
Когда раскрытие фигурных скобок сочетается с подстановочными знаками, сначала раскрываются фигурные скобки, а затем полученные подстановочные знаки заменяются обычным способом. Следовательно, список изображений JPEG и PNG в текущем каталоге можно получить, используя:
ls *.{jpg,jpeg,png} # expands to *.jpg *.jpeg *.png - after which, # the wildcards are processedecho *.{png,jp{e,}g} # echo just shows the expansions - # and braces in braces are possible.
Помимо чередования, раскрытие фигурных скобок можно использовать для последовательных диапазонов между двумя целыми числами или символами, разделенными двойными точками. Более новые версии 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}.txtfile1.txt file2.txt file3.txt file4.txt$ echo {a..e}a b c d e$ echo {1..10..3}1 4 7 10$ echo {a..j..3}a d g j
Когда раскрытие фигурных скобок сочетается с раскрытием переменных ( расширение параметров и подстановка параметров ), раскрытие переменных выполняется после раскрытия фигурных скобок, что в некоторых случаях может потребовать использования eval
встроенный, таким образом:
$ start=1; end=10$ echo {$start..$end} # fails to expand due to the evaluation order{1..10}$ eval echo {$start..$end} # variable expansion occurs then resulting string is evaluated1 2 3 4 5 6 7 8 9 10
Скрипты запуска
[ редактировать ]Этот раздел содержит инструкции, советы и инструкции . ( январь 2019 г. ) |
Когда Bash запускается, он выполняет команды в различных точечных файлах . В отличие от сценариев оболочки Bash, точечные файлы обычно не имеют ни разрешения на выполнение, ни директивы интерпретатора, например #!/bin/bash
.
Пример запуска Bash, совместимый с Legacy
[ редактировать ]Пример ~/.bash_profile
ниже совместим с оболочкой Bourne и дает семантику, аналогичную csh для ~/.bashrc
и ~/.bash_login
. [ -r filename ] && cmd
— это короткая оценка , которая проверяет, существует ли имя файла и доступно ли оно для чтения, пропуская часть после &&
если это не так.
[ -r ~/.profile ] && . ~/.profile # set up environment, once, Bourne-sh syntax onlyif [ -n "$PS1" ] ; then # are we interactive? [ -r ~/.bashrc ] && . ~/.bashrc # tty/prompt/function setup for interactive shells [ -r ~/.bash_login ] && . ~/.bash_login # any at-login tasks for login shell onlyfi # End of "if" block
Проблемы операционной системы при запуске 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 . [55] Сценарии оболочки Bash, предназначенные для переносимости, должны учитывать как минимум стандарт оболочки POSIX. Некоторые функции bash, отсутствующие в POSIX: [55] [56]
- Некоторые расширенные параметры вызова
- Расширение скобок
- Массивы и ассоциативные массивы
- Двойной кронштейн
[[...]]
расширенная тестовая конструкция и ее сопоставление с регулярными выражениями - Конструкция арифметического вычисления в двойных скобках (только
(( ... ))
;$(( ... ))
это POSIX) - Некоторые операции по манипулированию строками при расширении параметров
local
для переменных с ограниченной областью действия- Замена процесса
- Встроенные функции, специфичные для Bash
- Сопроцессы
- Переменные $EPOCHSECONDS и $EPOCHREALTIME. [57]
Если часть кода использует такую возможность, это называется «башизм» — проблема для портативного использования. Debian checkbashisms
и Видар Холен shellcheck
можно использовать, чтобы убедиться, что сценарий не содержит этих частей. [58] [59] Список варьируется в зависимости от фактической целевой оболочки: политика Debian разрешает некоторые расширения в их сценариях (например, в оболочке Dash ), [56] в то время как сценарий, предназначенный для поддержки оболочек Bourne до POSIX, таких autoconf как configure
, еще более ограничены в возможностях, которые они могут использовать. [60]
Сочетания клавиш
[ редактировать ]Bash использует GNU Readline для предоставления сочетаний клавиш для редактирования командной строки с использованием привязок клавиш по умолчанию ( Emacs ). Vi-привязки можно включить, запустив set -o vi
. [61]
Управление процессами (контроль работ)
[ редактировать ]Оболочка Bash имеет два режима выполнения команд: пакетный (асинхронный) и параллельный (синхронный).
Для выполнения команд в пакетном режиме (т.е. последовательно) их необходимо разделить символом «;» или выделить в отдельные строки:
command1; command2command3
В этом примере, когда команда1 завершается, выполняется команда2, а когда команда2 завершается, выполняется команда3.
Фоновое выполнение команды 1 может произойти с использованием (символа &) в конце команды выполнения, и процесс будет выполняться в фоновом режиме, при этом немедленно возвращая управление оболочке и позволяя продолжить выполнение команд.
command1 &
Или, чтобы одновременно выполнить две команды Command1 и Command2, они должны быть выполнены в оболочке Bash следующим образом:
command1 & command2
В этом случае команда1 выполняется в фоновом режиме и символе, немедленно возвращая управление оболочке, которая выполняет команду2 на переднем плане.
Процесс можно остановить и вернуть управление в bash, набрав Ctrl+ z пока процесс выполняется на переднем плане. [62]
Список всех процессов, как фоновых, так и остановленных, можно получить, запустив jobs
:
$ jobs[1]- Running command1 &[2]+ Stopped command2
В выводе число в скобках относится к идентификатору задания. Знак плюс означает процесс по умолчанию для bg
и fg
. Тексты «Выполняется» и «Остановлен» относятся к состоянию процесса . Последняя строка — это команда, запустившая процесс.
Состояние процесса можно изменить с помощью различных команд. fg
команда выводит процесс на передний план, а bg
устанавливает остановленный процесс, работающий в фоновом режиме. bg
и fg
может принять идентификатор задания в качестве первого аргумента, чтобы указать процесс, над которым нужно действовать. Без него они используют процесс по умолчанию, обозначенный знаком плюс в выводе jobs
. kill
Команда может использоваться для преждевременного завершения процесса, отправив ему сигнал . Идентификатор задания необходимо указывать после знака процента:
kill %1
Условное исполнение
[ редактировать ]Bash предоставляет разделители команд «условного выполнения», которые ставят выполнение команды в зависимость от кода завершения, установленного прецедентной командой. Например:
cd "$SOMEWHERE" && ./do_something || echo "An error occurred" >&2
Где ./do_something выполняется только в том случае, если команда cd (изменить каталог) была «успешной» (возвращала нулевой статус выхода), а команда echo будет выполняться только в том случае, если команда cd или ./do_something возвращает «ошибку». (ненулевой статус выхода).
Для всех команд статус завершения сохраняется в специальной переменной. $?
. Bash также поддерживает if ...;then ...;else ...;fi
и case $VARIABLE in $pattern)...;;$other_pattern)...;; esac
формы условной оценки команд.
Отчеты об ошибках
[ редактировать ]Внешняя команда bashbug сообщает об ошибках оболочки Bash. Когда команда вызывается, она вызывает редактор пользователя по умолчанию с формой для заполнения. Форма отправляется по почте сопровождающим Bash (или, при необходимости, на другие адреса электронной почты). [63] [64]
Программируемое завершение
[ редактировать ]Bash поддерживает программируемое завершение через встроенный complete
, compopt
, и compgen
команды. [65] Эта функция доступна с бета-версии 2.04, выпущенной в 2000 году. [66] [67] Эти команды обеспечивают сложную и интеллектуальную спецификацию завершения для команд (т.е. установленных программ), функций, переменных и имен файлов. [68]
The complete
и compopt
две команды определяют, как аргументы некоторых доступных команд или опций будут перечислены во входных данных readline . Начиная с версии 5.1 завершение команды или опции обычно активируется командой Tab ↹ нажатие клавиши после ввода ее имени. [68]
Название программы
[ редактировать ]Возможно, этот раздел содержит оригинальные исследования . ( Май 2024 г. ) |
Название программы представляет собой фигуру речи или остроту , которая начинается с уважения к Стивену Борну , создателю одной из программ оболочки, которую иногда считали замененной оболочкой bash. Его имя используется как каламбур на образе родов. К этому каламбуру, по-видимому, добавляется намек : возможно, на индуистскую или буддийскую идею реинкарнации ; возможно, к христианской идиоме, известной как « рождение свыше »; или, вполне возможно, просто к более абстрактной идее обновления . В то время как многочисленные английские переводы христианского Нового Завета , Книги Иоанна , главы 3 , действительно содержат слова «рожденный свыше», словарь Мерриам-Вебстера определяет «рожденный свыше» как «...человека, который совершил обновленное или подтвержденное обязательство .... [69] Каким бы ни был первоначальный пробный камень, в конце концов программа получила название « Оболочка Bourne Again ». [70] [71]
Акроним этого названия — «баш » , слово, означающее «жестокий удар». [72] «В контексте компьютерного программирования «сильный удар по чему-либо», например, по компьютерной клавиатуре, можно рассматривать как гиперболический образ некоторого разочарования . Такие образы негативной эмоциональности можно рассматривать как прямое сопоставление с идеей становления». родился свыше».
Такое наименование можно считать примером словесной иронии. [73] или случайный намек . [74] Грамматика Bash изначально была основана на грамматиках самых популярных программ оболочки Unix, используемых в настоящее время, некоторые из которых считались особенно трудными в использовании или разочаровывающими в то время . С течением времени разработка bash сделала грамматику более удобной для пользователя, [75] [76] [77] [78] [79] [80] настолько, что кажется вероятным, что проект bash был направлен на улучшение удобства использования. С тех пор bash стал де-факто программой оболочки по умолчанию в большинстве операционных систем Linux и Unix.
Документация
[ редактировать ]В качестве стандарта, на котором основан bash, POSIX или IEEE Std 1003.1, [81] и далее, носит информативный характер.
Справочная страница Linux [82] [83] призван стать авторитетным пояснительным документом для понимания того, как bash
GNU работает, в то время как руководство иногда считается более удобным для чтения. «Вы также можете найти информацию о Bash, запустив info bash ... или посмотрев /usr/share/doc/bash/
, /usr/local/share/doc/bash/
или аналогичные каталоги в вашей системе. Краткую сводку можно получить, запустив bash --help. [70] "
В современных Linux информацию о встроенных командах оболочки можно найти, выполнив help,
help [built-in name]
или man builtins
в командной строке терминала, где установлен bash. Некоторые команды, например echo
, false
, kill
, printf
, test
или true
, в зависимости от вашей системы и локально установленной версии bash, может относиться либо к встроенному в оболочку, либо к системному двоичному исполняемому файлу. Когда происходит один из этих конфликтов имен команд, bash по умолчанию выполняет заданную командную строку, используя встроенную оболочку. Указание абсолютного пути к двоичному исполняемому файлу (т. е. /bin/printf
) — это один из способов гарантировать, что оболочка использует системный двоичный файл. Эта проблема с конфликтом имен также влияет на любые «справочные сводки», просматриваемые с помощью kill --help
и /bin/kill --help
. Встроенные файлы оболочки и одноимённые системные двоичные исполняемые файлы часто имеют разные параметры.
«У сопровождающего проекта также есть страница Bash, на которой есть часто задаваемые вопросы», [84] [85] [70] этот FAQ актуален для версии bash 5.1 и больше не обновляется.
Уязвимости
[ редактировать ]Дыра в безопасности Bash начиная с версии 1.03 (август 1989 г.), [86] получивший название Shellshock , был обнаружен в начале сентября 2014 года и быстро привел к целому ряду атак в Интернете . [87] [88] [89] Патчи для исправления ошибок стали доступны вскоре после их обнаружения.
Лицензирование
[ редактировать ]Начиная с версии 4.0: GPL-3.0 или новее. [90]
1.11? до 3.2: GPL-2.0 или новее [91]
0,99? до 1.05?: GPL-1.0 или новее [92] [51] [93]
Версии
[ редактировать ]Версия также доступна для Windows 10 и Windows 11 через подсистему Windows для Linux . [94] [95] Это также пользовательская оболочка по умолчанию в Solaris 11. [96] Bash также был оболочкой по умолчанию в BeOS . [15] и в версиях Apple macOS от 10.3 (изначально оболочкой по умолчанию была tcsh ) до 10.15 ( macOS Catalina ), что изменило оболочку по умолчанию на zsh , [32] хотя Bash по-прежнему доступен в качестве альтернативной оболочки. [54]
История выпусков
[ редактировать ]Версия | Дата выпуска | Примечания к выпуску |
---|---|---|
Баш-5.2.15 | 2022-12-13 | НОВОСТИ |
Баш-5.2 | 2022-09-26 | |
Баш-5.1 | 2020-12-07 | история версий github НОВОСТИ [51] |
Баш-5.0 | 2019-01-07 | [97] [98] [99] |
Баш-5.0-rc1 | 2018-12-20 | |
Баш-5.0-бета2 | 2018-11-28 | |
Баш-5.0-бета | 2018-09-17 | |
Баш-5.0-альфа | 2018-05-22 | |
Баш-4.4 | 2016-09-15 | история версий github НОВОСТИ v4.4 |
Баш-4.4-rc2 | 2016-08-22 | |
Баш-4.4-rc1 | 2016-02-24 | |
Баш-4.4-бета2 | 2016-07-11 | |
Баш-4.4-бета | 2015-10-12 | |
Баш-4.3 | 2014-02-26 | |
Баш-4.2 | 2011-02-13 | |
Баш-4.1 | 2009-12-31 | |
Баш-4.0 | 2009-02-20 | |
Баш-4.0-rc1 | 2009-01-12 | |
Баш-3.2 | 2006-10-11 | |
Баш-3.1 | 2005-12-08 | |
Баш-3.0 | 2004-08-03 | |
Баш-2.05b | 2002-07-17 | |
баш-2.05а | 2001-11-16 | |
Баш-2.05 | 2001-04-09 | |
Баш-2.04 | 2000-03-21 | |
Баш-2.03 | 1999-02-19 | |
Баш-2.02 | 1998-04-18 | |
Баш-2.01 | 1997-06-05 | |
Баш-2.0 | 1996-12-31 |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ "bash-5.2.21.tar.gz" . 9 ноября 2023 г. Проверено 9 ноября 2023 г.
- ^ «Фонд свободного программного обеспечения — совместная работа над свободным программным обеспечением — Первая страница» . fsf.org . Проверено 19 мая 2024 г.
Фонд свободного программного обеспечения (FSF) — это некоммерческая организация, миссия которой по всему миру заключается в продвижении свободы пользователей компьютеров.
- ^ «Кратко о GNU» . gnu.org . Проверено 19 мая 2024 г.
Конечная цель состоит в том, чтобы предоставить бесплатное программное обеспечение, способное выполнять все задачи, которые хотят выполнять пользователи компьютеров, и таким образом оставить несвободное программное обеспечение в прошлом.
- ^ «Бюллетень GNU, том 1, № 7, июнь 1989 г.:: Кто GNU» . gnu.org . Проверено 19 мая 2024 г.
Брайан Фокс завершил работу над версией sh для GNU, получившей название BASH, «Bourne Again SHell».
- ^ «Программное обеспечение GNU» . gnu.org . Проверено 19 мая 2024 г.
GNU — это операционная система, которая на 100% является свободным программным обеспечением.
- ^ «Оболочка Борна» . IBM.com . Проверено 19 мая 2024 г.
Оболочка Bourne — это интерактивный интерпретатор команд и язык командного программирования.
- ^ Перейти обратно: а б с Ричард Столлман (переправлено с комментариями Чета Рэми) (10 февраля 1988 г.). "GNU + BSD =?" . Группа новостей : comp.unix.questions . Usenet: [электронная почта защищена] . Архивировано из оригинала 28 декабря 2021 года . Проверено 28 декабря 2021 г.
В течение полутора лет оболочка GNU была «почти готова». Автор неоднократно давал обещания выполнить то, что он сделал, но так и не сдержал их. В конце концов я больше не мог поверить, что он когда-нибудь что-нибудь доставит. Итак, сотрудник Фонда Брайан Фокс сейчас реализует имитацию оболочки Bourne.
- ^ Гамильтон, Наоми (30 мая 2008 г.), «AZ языков программирования: BASH/Bourne-Again Shell» , Computerworld : 2, заархивировано из оригинала 6 июля 2011 г. , получено 21 марта 2011 г. ,
Когда Ричард Столлман решил создать полноценный замены тогдашним обремененным системам Unix, он знал, что в конечном итоге ему придется иметь замену всем общим утилитам, особенно стандартной оболочке, и эти замены должны будут иметь приемлемую лицензию.
ПРИМЕЧАНИЕ. Исходная ссылка на компьютерный мир.com.au не работает: см. также копии исходного материала на сайте - ^ Перейти обратно: а б Брайан Фокс (переадресован Леонардом Х. Тауэром-младшим) (8 июня 1989 г.). «Bash находится в бета-версии!» . Группа новостей : gnu.announce . Архивировано из оригинала 4 мая 2013 года . Проверено 28 октября 2010 г.
- ^ «Я почти получил редактор и компилятор Linux» . Доктор Добб . Архивировано из оригинала 2 марта 2021 года . Проверено 12 сентября 2020 г.
- ^ Ричард Столлман (12 ноября 2010 г.). «О проекте GNU» . Фонд свободного программного обеспечения . Архивировано из оригинала 24 апреля 2011 года . Проверено 13 марта 2011 г.
«Bourne Again Shell» — это игра от названия Bourne Shell , которое было обычной оболочкой в Unix.
- ^ Гаттол, Маркус (13 марта 2011 г.), Bourne-again Shell , заархивировано из оригинала 9 марта 2011 г. , получено 13 марта 2011 г. ,
Название представляет собой каламбур от названия оболочки Bourne (sh), ранней и важной оболочки Unix. написанный Стивеном Борном и распространяемый вместе с версией 7 Unix примерно в 1978 году, а также концепция «рождения заново».
- ^ Торвальдс, Линус Бенедикт (август 1991 г.). "comp.os.minix" . Проверено 6 сентября 2009 г.
В настоящее время я портировал bash(1.08) и gcc(1.40), и, похоже, все работает.
- ^ «Часто задаваемые вопросы по Bash, версия 4.14» . Архивировано из оригинала 1 сентября 2018 года . Проверено 9 апреля 2016 г.
- ^ Перейти обратно: а б «Альтернатива настольному компьютеру» . Форбс .
- ^ «Приложение A: Использование оболочки командной строки BeOS» . testou.free.fr .
- ^ "Терминал" .
- ^ Брайан Фокс (29 августа 1996 г.), shell.c , Free Software Foundation , заархивировано из оригинала 28 сентября 2018 г. , получено 1 ноября 2010 г. ,
Дата рождения: воскресенье, 10 января 1988 г. Первоначальный автор: Брайан Фокс
- ^ Ричард Столлман (3 октября 2010 г.). «О проекте GNU» . Фонд свободного программного обеспечения . Архивировано из оригинала 24 апреля 2011 года . Проверено 21 марта 2011 г.
Сотрудники Фонда свободного программного обеспечения написали и поддерживают ряд программных пакетов GNU. Двумя примечательными из них являются библиотека C и оболочка. ... Мы финансировали разработку этих программ, потому что проект GNU касался не только инструментов или среды разработки. Нашей целью была полноценная операционная система, и для этой цели были необходимы эти программы.
- ^ Лен ( [адрес электронной почты защищен] ) (20 апреля 1993 г.). «Бюллетень GNU, январь 1993 г.» . Группа новостей : gnu.announce . Usenet: [электронная почта защищена] . Архивировано из оригинала 2 марта 2021 года . Проверено 28 октября 2010 г.
- ^ Рэми, Чет (1 августа 1994 г.). «Bash — оболочка GNU (Размышления и извлеченные уроки)» . Linux-журнал . Архивировано из оригинала 5 декабря 2008 года . Проверено 13 ноября 2008 г.
- ^ Чет Рэми (31 октября 2010 г.), Интервью Dates in your Computerworld , заархивировано из оригинала 20 июля 2012 г. , получено 31 октября 2010 г.
- ^ Гамильтон, Наоми (30 марта 2008 г.). «Языки программирования: BASH/Bourne-Again Shell» . Компьютерный мир . Архивировано из оригинала 8 ноября 2016 года . Проверено 1 марта 2022 г.
- ^ Рэми, Чет (20 апреля 2021 г.). «Оболочка GNU Bourne-Again» . Услуги технологической инфраструктуры . Университет Кейс Вестерн Резерв . Проверено 1 марта 2022 г.
- ^ Чет Рэми (12 июня 1989 г.). «Исправления и улучшения Bash 0.99» . Группа новостей : gnu.bash.bug . Архивировано из оригинала 10 ноября 2012 года . Проверено 1 ноября 2010 г.
- ^ Чет Рэми (24 июля 1989 г.). «Некоторые исправления bash-1.02» . Группа новостей : gnu.bash.bug . Архивировано из оригинала 10 ноября 2012 года . Проверено 30 октября 2010 г.
- ^ Брайан Фокс (2 марта 1990 г.). «Наличие bash 1.05» . Группа новостей : gnu.bash.bug . Архивировано из оригинала 10 ноября 2012 года . Проверено 30 октября 2010 г.
- ^ Бреснахан, Кристина; Блюм, Ричард (апрель 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, потому что это самая популярная оболочка.
- ^ Данеш, Арман; Джанг, Майкл (февраль 2006 г.). Освоение Linux . John Wiley & Sons, Inc. с. 363. ИСБН 978-0-7821-5277-7 . Архивировано из оригинала 2 марта 2021 года . Проверено 6 июня 2016 г.
Оболочка Bourne Again (bash) — наиболее распространенная оболочка, устанавливаемая в дистрибутивах Linux.
- ^ Фостер-Джонсон, Эрик; Уэлч, Джон К.; Андерсон, Мика (апрель 2005 г.). Начало написания сценариев оболочки . John Wiley & Sons, Inc. с. 6. ISBN 978-0-7645-9791-6 . Архивировано из оригинала 2 марта 2021 года . Проверено 6 июня 2016 г.
Bash на сегодняшний день является самой популярной оболочкой и является оболочкой по умолчанию в системах Linux и Mac OSX.
- ^ «Используйте zsh в качестве оболочки по умолчанию на вашем Mac — Служба поддержки Apple» . Архивировано из оригинала 2 декабря 2019 года . Проверено 1 июля 2019 г.
- ^ Перейти обратно: а б Уоррен, Том (4 июня 2019 г.). «Apple заменяет bash на zsh в качестве оболочки по умолчанию в macOS Catalina» . Грань . Архивировано из оригинала 10 июня 2019 года . Проверено 13 июня 2019 г.
- ^ «Отсутствует исходный код — соответствие GPL? · Проблема № 107 · Microsoft/WSL» . Гитхаб . Архивировано из оригинала 24 сентября 2019 года . Проверено 8 июля 2016 г.
- ^ «ГНУ Баш» . Софтпедия . СофтНьюс. 23 января 2010 г. Архивировано из оригинала 21 октября 2017 г. . Проверено 9 апреля 2016 г.
- ^ «Установка новых пакетов GNU» . Архивировано из оригинала 3 октября 2020 года . Проверено 4 сентября 2020 г.
- ^ «Подсистемы совместимости» . Архивировано из оригинала 23 сентября 2020 года . Проверено 4 сентября 2020 г.
- ^ Джулиана, Чино (10 июня 2017 г.). «Статус выхода Linux bash и как установить статус выхода в bash — Techolac» . Архивировано из оригинала 21 июня 2019 года . Проверено 21 июня 2019 г.
- ^ Хузайфа Сидхпурвала (24 сентября 2014 г.). «Атака с внедрением кода с помощью специально созданных переменных среды Bash» . Красная шляпа . Архивировано из оригинала 25 сентября 2014 года . Проверено 25 сентября 2014 г.
- ^ «Среда выполнения команд (Справочное руководство Bash)» . www.gnu.org .
- ^ «Расширение скобок (Справочное руководство Bash)» . www.gnu.org . Архивировано из оригинала 15 марта 2018 года . Проверено 10 января 2024 г.
- ^ {{ цитировать сетьbash.html#Programmable-Completion | title = Справочное руководство Bash | URL = https://www.gnu.org/software/bash/manual/ }} | сайт = www.gnu.org
- ^ «Отладка Bash-скриптов» . tldp.org . Архивировано из оригинала 4 ноября 2018 года . Проверено 20 ноября 2018 г.
- ^ «Встроенная функция Set (Справочное руководство Bash)» . www.gnu.org . Проверено 10 января 2024 г.
- ^ «Изменения Bash [Bash Hackers Wiki (DEV 20200708T2203)]» . wiki-dev.bash-hackers.org . Архивировано из оригинала 23 сентября 2019 года . Проверено 23 сентября 2019 г.
- ^ «Встроенные функции Bourne Shell (Справочное руководство Bash)» . www.gnu.org . Проверено 10 января 2024 г.
- ^ «Справочное руководство по Bash» . www.gnu.org . Архивировано из оригинала 15 сентября 2019 года . Проверено 15 сентября 2019 г.
- ^ «Более продуктивная работа с bash 2.x/3.x» . www.caliban.org . Архивировано из оригинала 29 июня 2018 года . Проверено 21 июня 2018 г.
- ^ «6.11 Bash POSIX Mode» , Справочное руководство GNU Bash, для Bash, версия 4.1 , 23 декабря 2009 г., заархивировано из оригинала 3 декабря 2010 г. , получено 26 октября 2010 г.
- ^ «Расширенное руководство по написанию сценариев Bash» . www.tldp.org . Раздел 37.2 (Bash, версия 3). Архивировано из оригинала 5 мая 2017 года . Проверено 5 марта 2017 г.
- ^ «Баш, версия 4» . tldp.org . Архивировано из оригинала 1 июля 2018 года . Проверено 25 июня 2018 г.
- ^ Перейти обратно: а б с «BashFAQ/061 — Wiki Грега» . mywiki.wooledge.org . Архивировано из оригинала 2 марта 2021 года . Проверено 1 марта 2021 г.
- ^ «Массивы (Справочное руководство Bash)» . www.gnu.org . Архивировано из оригинала 11 июля 2018 года . Проверено 4 июля 2018 г.
- ^ «macos — обновите bash до версии 4.0 для OSX» . Спросите другое . Архивировано из оригинала 25 июня 2018 года . Проверено 25 июня 2018 г.
- ^ Перейти обратно: а б Хьюз, Мэтью (4 июня 2019 г.). «Почему macOS Catalina использует Zsh вместо Bash? Лицензирование» . Следующая сеть . Архивировано из оригинала 31 декабря 2020 года . Проверено 12 января 2021 г.
- ^ Перейти обратно: а б Мендель Купер. «Проблемы переносимости» . Проект документации Linux . ibiblio.org. Архивировано из оригинала 27 января 2012 года . Проверено 26 января 2012 г.
- ^ Перейти обратно: а б «10. Файлы» . Руководство по политике Debian v4.5.0.2 . Архивировано из оригинала 12 мая 2020 года . Проверено 11 мая 2020 г.
- ^ «Как форматировать дату и время в Linux, MacOS и Bash?» . Советы по ракушкам! . Архивировано из оригинала 3 июня 2020 года . Проверено 3 июня 2020 г.
- ^ Linux по основным командам Руководство –
- ^ Linux по основным командам Руководство –
- ^ «Портативная оболочка» . Автоконф . Архивировано из оригинала 2 марта 2021 года . Проверено 20 января 2020 г. .
- ^ «Справка по BASH — учебное пособие по Bash» . Hypexr.org. 5 октября 2012 г. Архивировано из оригинала 2 марта 2021 г. . Проверено 21 июля 2013 г.
- ^ «Справочное руководство по Bash» . www.gnu.org . Архивировано из оригинала 15 марта 2018 года . Проверено 27 марта 2018 г.
- ^ bashbug(1). Архивировано 2 октября 2018 г., в Wayback Machine , die.net.
- ^ «Команда Linux/Unix: bashbug». Архивировано 6 октября 2014 г., на Wayback Machine , apple.com.
- ^ «Справочное руководство по Bash» . tiswww.case.edu .
- ^ «Более продуктивная работа с bash 2.x/3.x» . www.caliban.org . Архивировано из оригинала 29 июня 2018 года . Проверено 21 июня 2018 г.
- ^ «Индекс /gnu/bash» . ftp.swin.edu.au. Архивировано из оригинала 8 марта 2020 года . Проверено 15 сентября 2019 г.
- ^ Перейти обратно: а б «Введение в программируемое завершение» . tldp.org . Проверено 21 января 2022 г.
- ^ «Определение РОЖДЕНИЯ СНОВА» . www.merriam-webster.com . Проверено 9 января 2024 г.
- ^ Перейти обратно: а б с «Bash — Проект GNU — Фонд свободного программного обеспечения» . www.gnu.org . Проверено 10 января 2024 г.
- ^ «Что такое Bash? (Справочное руководство Bash)» . www.gnu.org . Проверено 9 января 2024 г.
- ^ «Определение БАШ» . www.merriam-webster.com . 5 января 2024 г. Проверено 9 января 2024 г.
- ^ «Определение иронии, распространенные примеры и значение в литературе» . 31 августа 2020 г.
- ^ «Инсинуация — примеры и определение инсинуации» . 2 января 2014 г.
- ^ «BashGuide/Массивы — Wiki Грега» . mywiki.wooledge.org . Проверено 10 января 2024 г.
- ^ «CommandSubstitution — Wiki Грега» . mywiki.wooledge.org . Проверено 10 января 2024 г.
- ^ «BashGuide/TestsAndConditionals — Wiki Грега» . mywiki.wooledge.org . Проверено 10 января 2024 г.
- ^ «ИЗМЕНЕНИЯ — bash.git — bash» . git.savannah.gnu.org . Проверено 10 января 2024 г.
- ^ «Bash меняет [Bash Hackers Wiki]» . 14 февраля 2021 года. Архивировано из оригинала 14 февраля 2021 года . Проверено 10 января 2024 г.
- ^ «Устаревший и устаревший синтаксис [Bash Hackers Wiki]» . 11 февраля 2021 года. Архивировано из оригинала 11 февраля 2021 года . Проверено 10 января 2024 г.
- ^ «Базовые спецификации открытой группы, выпуск 7, издание 2018 г.» . pubs.opengroup.org .
- ^ «Страница руководства BASH(1)» . tiswww.case.edu .
- ^ "bash.0\doc - bash.git - bash" . git.savannah.gnu.org .
- ^ «Оболочка GNU Bourne-Again» . tiswww.case.edu .
- ^ «Часто задаваемые вопросы» .
- ^ Шазелас, Стефан (4 октября 2014 г.). «архивы списков рассылки oss-sec» . Сайт Seclists.org . Архивировано из оригинала 6 октября 2014 года . Проверено 4 октября 2014 г.
- ^ Лейден, Джон (24 сентября 2014 г.). «Обновите Bash СЕЙЧАС: ошибка «Shell Shock» делает широко открытыми системы OS X и Linux» . Регистр . Архивировано из оригинала 16 октября 2014 года . Проверено 25 сентября 2014 г.
- ^ Перлрот, Николь (25 сентября 2014 г.). «Эксперты по безопасности ожидают, что программная ошибка Shellshock в Bash будет серьезной» . Нью-Йорк Таймс . Архивировано из оригинала 5 апреля 2019 года . Проверено 25 сентября 2014 г.
- ^ Зельцер, Ларри (29 сентября 2014 г.). «Shellshock делает Heartbleed незначительным» . ЗДНет . Архивировано из оригинала 14 мая 2016 года.
- ^ Проект ГНУ . «Файл README» . Архивировано из оригинала 26 апреля 2019 года . Проверено 16 апреля 2014 г.
Bash — это бесплатное программное обеспечение, распространяемое на условиях Стандартной общественной лицензии [GNU], опубликованной Фондом свободного программного обеспечения, версия 3 лицензии (или любой более поздней версии).
- ^ "баш-1.11" . oldlinux.org . Архивировано из оригинала 15 октября 2021 года . Проверено 9 июня 2021 г.
См. test.c для GPL-2.0 или более поздней версии.
- ^ "bash-1.05.tar" . oldlinux.org .
- ^ «Есть ли способ загрузить предположительно исходный исходный код bash bash-0.99?» . unix.stackexchange.com .
- ^ «Как установить инструмент командной строки Bash Shell в Windows 10» . 28 сентября 2016 г. Архивировано из оригинала 20 ноября 2016 г. Проверено 20 ноября 2016 г.
- ^ Хоффман, Крис (30 июля 2021 г.). «Как установить подсистему Windows для Linux в Windows 11» . Как компьютерщик . Проверено 12 октября 2022 г.
- ^ «Изменения функций пользовательской среды» . Оракул. Архивировано из оригинала 12 июня 2018 года . Проверено 8 июня 2018 г.
- ^ «История версий github НОВОСТИ v5.0» . Гитхаб . Архивировано из оригинала 4 мая 2022 года . Проверено 1 марта 2021 г.
- ^ «Bash меняет [Bash Hackers Wiki]» . Архивировано из оригинала 18 марта 2020 года . Проверено 25 ноября 2019 г.
- ^ «Доступна версия Bash-5.0» . lists.gnu.org . Архивировано из оригинала 8 ноября 2020 года . Проверено 1 марта 2021 г.
Дальнейшее чтение
[ редактировать ]- Стивенсон, Нил (2003). Вначале... Была командная строка . ХарперКоллинз. ISBN 978-0380815937 .
- «Эволюция оболочек в Linux» . IBM.com . Проверено 19 мая 2024 г.
- «Справочник по написанию сценариев :: Создание сценариев с использованием оболочки Bourne-Again (Bash)» . Беркли.edu . Проверено 19 мая 2024 г.
- «IRIS :: Учебные и исследовательские информационные системы :: Часто задаваемые вопросы: Unix :: О оболочках UNIX» . Беркли.edu . Проверено 19 мая 2024 г.
- оболочки Unix
- программное обеспечение 1989 года
- Кроссплатформенное бесплатное программное обеспечение
- Специализированные языки программирования
- Языки программирования с динамической областью действия
- Бесплатное программное обеспечение, написанное на C.
- Программное обеспечение проекта GNU
- Языки сценариев
- Текстоориентированные языки программирования