Релиз командной оболочки Bash 5.3

После почти трёх лет разработки опубликована новая версия командного интерпретатора GNU Bash 5.3, используемого по умолчанию в большинстве дистрибутивов Linux. Одновременно сформирован релиз библиотеки readline 8.3, применяемой в bash для организации редактирования командной строки.

Из ключевых улучшений можно отметить:

  • Реализованы новые формы подстановки команд «${ command; }» и «${|command;}», позволяющие перехватить вывод команды без ответвления отдельного дочернего процесса и без использования неименованных каналов. Результаты выполнения команды отдаются как результат подстановки или записываются в переменную REPLY.
  • Добавлена новая переменная GLOBSORT, определяющая способ сортировки при дополнении файлового пути. Например, можно выбрать сортировку по имени (GLOBSORT=name), размеру (GLOBSORT=size) или времени изменения (GLOBSORT=mtime), а также определить прямой (от меньшего к большему) или обратный (от большего к меньшему) порядок сортировки (например, при «GLOBSORT=-size» вначале будут показаны самые большие файлы).
  • Во встроенную команду «compgen» добавлена опция «-V varname» для сохранения сгенерированных дополнений в переменную, вместо вывода в стандартный поток.
  • Во встроенную команду «read» добавлена опция «-E», при вводе данных задействующая библиотеку readline с правилами автодополнения конструкций bash.
  • Во встроенную команду «source» добавлена опция «-p PATH», позволяющая переопределить список поиска в файловых путях (указанное значение используется вместо переменной $PATH).
  • Исходный код переведён на использование стандарта C23. Прекращена возможность сборки компиляторами в режиме «K&R C» (стиль, соответствующий описанию языка Си в книге «The C Programming Language» Кернигана и Ритчи).
  • Во встроенной команде «umask» обеспечена полная совместимость со спецификациями POSIX.
  • Добавлена загружаемая команда «kv», формирующая ассоциативный массив на основе набора данных в формате «ключ значение».
  • Добавлена загружаемая команда «strptime», преобразующая текстовое представление даты и времени в эпохальное время (число секунд с 1 января 1970 года).
  • Добавлена загружаемая команда «fltexpr», позволяющая выполнять арифметические операции с плавающей запятой по аналогии с командой let.
  • Добавлена динамически выставляемая переменная BASH_MONOSECONDS, которая содержит текущее значение системных монотонных часов, которые непрерывно увеличиваются, даже при изменении времени в прошлое значение.
  • В режиме POSIX сравнение строк в команде «test», используя операторы «‹» и «›», теперь производится с учётом текущей локали.
  • В команде «bind -x» разрешено разделение пробелом клавиши и вызываемой команды, если последовательность заключена в двойные кавычки.
  • В новой версии Readline предложена опция «search-ignore-case» для поиска в истории без учёта регистра символов. Добавлена команда «export-completions» для экспорта вариантов дополнения слова для обработки в других процессах. Добавлена команда «execute-named-command» для выполнения команды, имя которой получено из стандартного входного потока.

Источник: http://www.opennet.ru/opennews/art.shtml?num=63532