Релиз командной оболочки 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” для выполнения команды, имя которой получено из стандартного входного потока.
Release. Ссылка here.