Дата публикации:Sun, 06 Jul 2025 14:31:04 +0300
После почти трёх лет разработки опубликована новая версия командного интерпретатора 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" для выполнения команды, имя которой получено из стандартного входного потока.
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63532