Що буде новим у bash 5


29

Я просто переглядав офіційне сховище bash (я зазвичай цього не роблю) для чогось непов'язаного, але помітив, що bash 5 вже в бета-версії. Мені просто цікаво, що буде новим у bash 5, але я не зміг знайти жодної інформації. Може хтось підсумує зміни між 4.4 та 5 версією Bash


6
Тут прямо у CHANGESфайлі: git.savannah.gnu.org/cgit/bash.git/tree/…
muru

Відповіді:


21

Зміни, внесені bashміж релізами 4.4 та 5.0 (випущені 2019-01-07), можна знайти у NEWSфайлі у bashрозподілі джерела.

Ось посилання на нього (змін тут занадто багато, щоб їх перерахувати тут).


Короткий огляд показує термін loadable builtins. Чи bashслідкуйте за новим стандартним стандартом, ksh93щоб знайти розширені вбудовані елементи, PATHа не надавати їм завжди пріоритет?
schily

@schily bash4.4 і пізніших версій використовує BASH_LOADABLES_PATHта завантажує їх звідти enable -f builtin-name.
Кусалаланда

Ну, мабуть, це стосується часу завантаження команди. А як щодо минулого часу? enableвиглядає як повторне виконання ksh93команди, builtinале у неї відсутня можливість приєднати шлях до кожної вбудованої команди, яка в, ksh93як правило, заздалегідь визначена /usr/ast/bin/<name>і дозволяє мати тонкозернистий контроль над усіма побудованими командами.
schily

@Kusalananda як я можу отримати новий баш 5.0
Анкур Лорія

@AnkurLoriya Ви чекаєте, поки дистриб'ютор Unix доставить його як пакет або ви складете його самостійно з джерел. Джерела та інструкції з установки розміщені на сторінці GNU Bash .
Kusalananda

14

Якщо ви, як і я, шукаєте функції заголовка, а не повний журнал змін, це повідомлення виконавця, Чет Рамі, перевершує це. Ось цікавий розділ:

Цей випуск виправляє кілька виправлених помилок у bash-4.4 та вводить кілька нових функцій. Найбільш значні виправлення помилок - це уточнення способу вирішення змінних nameref та ряд потенційних помилок пам'яті поза межами діапазону, виявлених за допомогою плавлення. Існує ряд змін у розширенні $ @ та $ * у різних контекстах, коли розбиття слів не виконується відповідно до стандартної інтерпретації Posix, та додаткові зміни для вирішення кутових випадків відповідності Posix.

Найбільш помітними новими функціями є кілька нових змінних оболонок: BASH_ARGV0, EPOCHSECONDS та EPOCHREALTIME. Вбудований "історія" може видаляти діапазони записів історії та розуміє негативні аргументи як компенсації з кінця списку історії. Існує можливість дозволити локальним змінним успадковувати значення змінної з тим самим іменем у попередній області застосування. Існує нова опція оболонки, яка при ввімкненні викликає оболонку спроби розширити асоціативні підписи масиву лише один раз (це проблема, коли вони використовуються в арифметичних виразах). Параметр оболонки `globasciiranges 'тепер увімкнено за замовчуванням; його можна встановити за замовчуванням у час конфігурації.

Існує декілька несумісних змін між bash-4.4 та bash-5.0. Зміни способу вирішення змінних nameref означають, що деякі способи використання namerefs будуть вести себе по-різному, хоча я намагався мінімізувати проблеми сумісності. За замовчуванням оболонка встановлює лише BASH_ARGC та BASH_ARGV при запуску, якщо ввімкнено розширений режим налагодження; Це було недоглядом, що воно було встановлено беззастережно і спричиняло проблеми з продуктивністю, коли сценарії передавали велику кількість аргументів.

Він також посилається на ці два файли, якщо ви хочете більше:

  • НОВИНИ : детальніше (також у відповіді Кусалананда)
  • ЗМІНИ : найбільш детально

5

Вбудований "історія" може видаляти діапазони записів історії та розуміє негативні аргументи як компенсації з кінця списку історії.

Приклад видалення діапазону:

history -d 123-130

або видалення останніх 10:

history -d -10--1

Витяг із сторінки чоловіка Bash 5 :

"історія"

Опції, якщо вони постачаються, мають таке значення:

'-d OFFSET' Видалити запис історії в позиції OFFSET. Якщо OFFSET позитивний, його слід вказати так, як він з’являється при відображенні історії. Якщо OFFSET негативний, він інтерпретується як відносний до одного, більший за останню позицію історії, тому від'ємні показники відлічуються з кінця історії, а індекс '-1' посилається на поточну команду 'history -d'.

'-d START-END' Видалити записи історії між позиціями START і END, включно. Позитивні та негативні значення для START і END інтерпретуються як описано вище.

Дивіться мою відповідь: Видаліть діапазон історії баш

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.