Оглавление
- 1 Bash (оболочка Unix)
- 1.1 История и разработка
- 1.2 Распространение и популярность
- 1.3 Особенности и функции
- 1.4 Безопасность и уязвимости
- 1.5 Синтаксис и совместимость
- 1.6 Основные функции Bash
- 1.7 Расширение фигурных скобок
- 1.8 Сценарии запуска
- 1.9 Проблемы с операционной системой
- 1.10 Мобильность
- 1.11 Сочетания клавиш
- 1.12 Управление процессами
- 1.13 Условное выполнение
- 1.14 Сообщение об ошибке
- 1.15 Программируемое завершение
- 1.16 Происхождение названия
- 1.17 Значение аббревиатуры “bash”
- 1.18 История и развитие bash
- 1.19 Документация и ресурсы
- 1.20 Уязвимости и безопасность
- 1.21 Лицензирование и версии
- 1.22 История выпуска и рекомендации
- 1.23 Полный текст статьи:
- 2 Bash (оболочка Unix)
Bash (оболочка Unix)
-
История и разработка
- Bash разработан Брайаном Фоксом для проекта GNU в 1989 году.
- Первоначально назывался Bourne-Again SHell, но позже переименован в Bash.
- Разработан как 100% свободная альтернатива Bourne shell.
-
Распространение и популярность
- Bash стал популярной оболочкой для Linux и других операционных систем.
- Доступен в Windows, BeOS, Haiku и других платформах.
- Используется в качестве оболочки входа в систему по умолчанию в различных дистрибутивах Linux.
-
Особенности и функции
- Работает в текстовом окне, поддерживает выполнение команд из файлов (shell-скриптов).
- Включает богатый набор функций, таких как интерактивная оболочка, неинтерактивная оболочка, интерфейс командной строки, коды состояния выхода и другие.
- Поддерживает асинхронное выполнение, режим переносимости оболочки, комментарии с хэштегом и другие.
-
Безопасность и уязвимости
- В 2014 году обнаружена ошибка безопасности Shellshock, связанная с передачей определений функций в подоболочки.
- Ошибка была исправлена, но вызвала беспокойство среди пользователей.
-
Синтаксис и совместимость
- Синтаксис команд Bash является надмножеством синтаксиса оболочки Bourne.
- Включает идеи из оболочек Korn и C, такие как редактирование командной строки, история команд и другие.
- Поддерживает завершение работы с командной строкой и обработку сигналов.
-
Основные функции Bash
- Выполнение целочисленных вычислений без запуска внешних процессов с помощью команды ((…)) и синтаксиса переменной $((…))
- Перенаправление ввода-вывода с помощью оператора &>
- Замена процессов с использованием синтаксиса <(команда) и >(command)
- Поддержка документов here с помощью оператора <<<
- Сопоставление регулярных выражений в Bash 3.0
- Поддержка ассоциативных массивов в Bash 4.0
-
Расширение фигурных скобок
- Генерирует альтернативные комбинации
- Не сортирует результаты, порядок слева направо сохраняется
- Не рекомендуется использовать в переносимых сценариях
-
Сценарии запуска
- Bash выполняет команды в файлах dot
- Файлы dot обычно не имеют разрешения на выполнение и директивы интерпретатора
- Пример совместимого с устаревшими версиями ~/.bash_profile
-
Проблемы с операционной системой
- Сценарии запуска системы Bash могут вызывать проблемы
- Проблемы с файлами пользователя root и файлами-скелетами
- Сценарии запуска X window system могут влиять на пользовательские сценарии
-
Мобильность
- Bash точно соответствует стандарту POSIX 1003.2 с параметром –posix
- Некоторые функции Bash отсутствуют в POSIX
- Использование checkbashisms и shellcheck для проверки на башизмы
-
Сочетания клавиш
- Bash использует GNU Readline для сочетаний клавиш
- Vi-привязки можно включить с помощью set -o vi
-
Управление процессами
- Пакетный и параллельный режимы выполнения команд
- Фоновое выполнение с символом &
- Остановка и возврат управления с помощью Ctrl+z
- Список процессов с помощью заданий
- Изменение состояния процессов с помощью bg и fg
- Команда kill для преждевременного завершения процесса
-
Условное выполнение
- Разделители команд “условное выполнение”
- Поддержка if …;then …;else …;fi и case $в $pattern)…;;$other_pattern)…;; esac
-
Сообщение об ошибке
- Команда bashbug для сообщения об ошибках
- Форма для заполнения отправляется по почте сопровождающим Bash
-
Программируемое завершение
- Поддержка программируемого завершения с помощью complete, compopt и compgen
- Команды complete и compopt определяют отображение аргументов в readline
- Выполнение команды или опции активируется нажатием клавиши Tab
-
Происхождение названия
- Название “the Bourne Again SHell” является каламбуром, основанным на имени Стивена Борна и идее деторождения.
- Возможно, намек на реинкарнацию, “рождение свыше” или обновление.
-
Значение аббревиатуры “bash”
- “bash” означает “наносить сильный удар”, что может рассматриваться как гиперболический образ разочарования.
- Это название можно рассматривать как пример словесной иронии или случайного намека.
-
История и развитие bash
- Bash изначально был основан на грамматиках популярных оболочек Unix.
- С годами разработка сделала его грамматику более удобной для пользователя.
- Bash стал оболочкой по умолчанию в большинстве операционных систем Linux и Unix.
-
Документация и ресурсы
- Bash основан на POSIX и последующих стандартах.
- Справочная страница Linux и руководство GNU предоставляют информацию о bash.
- Встроенные команды можно найти с помощью команд help, справка или man builtins.
-
Уязвимости и безопасность
- В 2014 году была обнаружена уязвимость Shellshock, которая привела к атакам по всему Интернету.
- Исправления для ошибок были доступны вскоре после их обнаружения.
-
Лицензирование и версии
- Начиная с версии 4.0, bash лицензируется под GPL-3.0 или более поздней.
- Версии доступны для Windows 10 и 11, Solaris 11, BeOS и macOS.
-
История выпуска и рекомендации
- Bash был оболочкой по умолчанию в BeOS и macOS до версии 10.15.
- Рекомендуется дальнейшее чтение для более глубокого понимания bash.