Bash 5.3 вже тут з покращеною підстановкою команд, новими змінними та підтримкою C23.

bash Linux

Кілька днів тому Проєкт GNU оголосив про випуск нової версії Bash 5.3, популярний інтерпретатор команд, який залишається вибором за замовчуванням у більшості дистрибутивів Linux.

Ця нова версія відображає роботу майже трьох років, яка не лише впроваджує покращення мови та поведінки оболонки, але й вводить нові функції, що відповідають сучасним стандартам, таким як C23. Вона також постачається з випуском бібліотеки Readline 8.3.

Що нового в Bash 5.3

Одна з найбільш помітних змін у Bash 5.3 — це Введення нових форм підстановки команд: ${command;} та ${|command;}Це дозволяє перехоплювати вивід команди без створення дочірнього процесу чи використання конвеєрів, що зменшує споживання ресурсів та підвищує продуктивність. Результат можна зберігати безпосередньо у змінній REPLY, що спрощує поширені завдання захоплення виводу.

Ще однією новою функцією, представленою в GNU Bash 5.3, є нова змінна GLOBSORT дозволяє визначити порядок сортування під час розгортання шляхів до файлів. Користувачі можуть сортувати за назвою, розміром, датою зміни тощо, з опціями як за зростанням, так і за спаданням.

Крім того, у Bash 5.3 представлено покращення кількох вбудованих команд. Команда compgen тепер може зберігати згенеровані автодоповнення у змінній (-V назва змінної), тоді як read додає опцію -E для використання бібліотеки Readline з правилами автодоповнення Bash. Вихідний код також було покращено, тепер підтримується -p PATH для зміни шляху пошуку.

Так само, команда umask було налаштовано для повної відповідності специфікації POSIX, а функцію printf було покращено новими опціями для багатобайтових рядків та альтернативного представлення символів і рядків.

Сумісність з C23 та прощання з K&R C

Одна з найважливіших структурних змін – це прийняття стандарту C23 у вихідному коді Bash. Як результат, Підтримку компіляції в режимі "K&R C" було видалено., техніка, що сягає корінням у ранні часи мови програмування C.

З іншого боку, Bash 5.3 представляє кілька завантажуваних команд, таких як:

  • кв: генерувати асоціативні масиви з даних у форматі ключ-значення.
  • час виконання: перетворює дати в текстовому форматі на час Unix.
  • fltexpr: дозволяє виконувати арифметичні операції з плаваючою комою, емулюючи поведінку let.

Крім того, Додано динамічну змінну BASH_MONOSECONDSЩо забезпечує монотонний лічильник системного часу, корисний для завдань, де часова стабільність є критично важливою.

У режимі POSIX Bash тепер виконує порівняння рядків за допомогою операторів < та >. з урахуванням регіональних налаштувань. Це також узгоджує поведінку таких команд, як test, trap, wait та bind, чітко дотримуючись вимог стандарту. Наприклад, trap -P дозволяє вивести дію trap кожного сигналу, а wait -n покращує керування завершеними процесами та замінами.

Readline 8.3

Бібліотека Readline, доповнювач Bash, також отримала суттєве оновлення. Серед її найпомітніших нових функцій:

  • пошук з ігноруванням регістру: дозволяє пошук без урахування регістру в історії.
  • завершення експорту: експортує можливі варіанти завершення слова для зовнішньої обробки.
  • виконати-іменовану-команду: Виконує команди, ім'я яких зчитується зі стандартного вводу, що корисно для написання скриптів та налаштування.
  • Покращена підтримка макросів, нові налаштовувані змінні та покращена обробка розмірів екрана після відновлення (SIGCONT).

Встановлення та/або оновлення Bash у Linux

Ті, хто зацікавлений у встановленні або оновленні Bash на Linux, повинні знати, що це залежить від дистрибутива, який ви використовуєте. Нижче я поясню, як це зробити на основних дистрибутивах:

На дистрибутивах на базі Debian (таких як Ubuntu, Linux Mint)

sudo apt install --only-upgrade bash

Це оновить Bash до останньої версії, доступної в офіційних репозиторіях.

Якщо ви хочете встановити його з нуля (наприклад, на дуже мінімальну систему):

sudo apt встановити bash

У дистрибутивах на базі Red Hat (таких як Fedora, CentOS, RHEL)

sudo dnf update bash Щоб встановити Bash (якщо його ще немає):
sudo dnf встановити bash

На Arch Linux та похідних (таких як Manjaro)

sudo pacman -Syu bash

Це оновить Bash разом з усією системою. Щоб встановити лише Bash:

sudo pacman -S bash

Додати як пріоритетне джерело