Релиз командного интерпретатора Bash 5.1

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
08-Дек-2020 15:30

После двух лет разработки опубликована новая версия командного интерпретатора GNU Bash 5.1, используемого по умолчанию в большинстве дистрибутивов Linux. Одновременно сформирован релиз библиотеки readline 8.1, применяемой в bash для организации редактирования командной строки.
Из ключевых улучшений можно отметить:
  • Переработан движок генерации псевдослучайных чисел. Добавлена переменная SRANDOM, содержащая случайное 32-разрядное число из системного генератора псевдослучайных чисел (вместо LCRNG использованы вызовы getrandom/getentropy, /dev/urandom или arc4random, в зависимости от ОС). Выдаваемая последовательность теперь не является линейной и не повторяется при идентичном следовании запросов.
  • Для ассоциативных массивов реализована поддержка составных присвоений, в которых передаётся набор из пар в формате ключ/значение ("[key]=value"). Реализовано динамическое увеличение размера хэш-таблицы в зависимости от типа данных, добавляемых в ассоциативный массив.
  • Добавлена переменная PROMPT_COMMANDS, которую можно использовать для запуска нескольких команд перед выводом приглашения командной строки.
  • В команду wait добавлена опция "-p имя переменной" для сохранения в переменной информации о PID процесса, возвращённого при выполнении "wait -n" или вызова wait без аргументов. В "wait -n" теперь допускается передача списка работ (wait будет ожидать изменения состояния любой задачи из списка).
  • Добавлены новые загружаемые встроенные команды: asort, mktemp, accept, mkfifo, csv и cut/lcut.
  • В POSIX-режиме реализована возможность замещения процесса (process substitution), при которой ввод и вывод команды обрабатывается другими командами как файл (например, "diff <(sort file1) <(sort file2)").
  • Добавлены новые параметры операторов преобразования: "U", "u" и "L" для преобразования в верхний регистр всей строки, преобразования в верхний регистр первого символа и преобразования в нижний регистр, а также параметр "K" для отображения ассоциативного массива в формате ключ/значение.
  • Для включения режима совместимости с прошлыми версиями теперь нужно использовать переменную BASH_COMPAT (через опцию compat50 установить режим совместимости с bash 5.0 не получится).
  • В Readline по умолчанию включён режим выделенной вставки (bracketed-paste), при котором извлекаемые из буфера обмена данные обрамляются escape-последовательностями ("\e[200~" и "\e[201~") для визуального выделения поступивших из буфера обмена данных. В Readline обеспечена подсветка подобных вставок, а также подсветка текста, найденного при инкрементальном и неинкрементальном поиске в истории. Расширено число команд и ситуаций, для которых подставляются метки для подсветки.
  • Readline реализовано автоматическое включение горизонтальной прокрутки на однострочных терминалах.
  • Добавлена команда rl-clear-display для очистки содержимого экрана и буфера прокрутки.
  • Возвращено старое поведение, связанное с раскрытием файлового пути при указании слов, включающих обратные слэши, но не использующих спецсимволы раскрытия маски. Как и в bash 4.4 подобные пути теперь не раскрываются (изменённое поведение Bash 5.0 соответствовало стандарту POSIX, но было отрицательно воспринято пользователями и комитет POSIX согласился изменить спецификацию). Кроме того режим GLOBIGNORE теперь игнорирует указание "." и ".." в качестве указанных в терминале компонентов пути.
  • Изменена обработка исключений (trap) при чтении данных с терминала при помощи конструкций read и select. Встроенная команда select теперь запускает trap-обработчики в случае прерывания сигналом внутреннего вызова команды read. Разрешён рекурсивный запуск обработчиков SIGINT.
  • Разрешено использование команды "read -e" с произвольными файловыми дескрипторами (read -u N).
  • Добавлена возможность связывания с уже установленной в системе библиотекой Readline, вместо встроенной версии lib/readline (для подобного связывания требуется версия Readline 8.1).
  • В команде "bind -x" добавлена поддержка определения разных привязок клавиатурных комбинаций для разных режимов редактирования и разных раскладок клавиатуры.
  • Реализована оптимизация числа форков, выполняемых при запуске команд в subshell или при помощи "bash -c". При выполнении "bash -c" статус выполнения работ теперь можно узнать командой jobs.
  • Код сопоставления по шаблону теперь использует вызов fnmatch для учёта одинаково выглядящих строк, но отличающихся по кодам символов.
  • В readline добавлена команда shell-transpose-words, использующая то же определение слов, что и в команде shell-forward-word. По умолчанию добавлены клавиатурные привязки для команд shell-forward-word,
    shell-backward-word, shell-transpose-words и shell-kill-word.
  • В начальном окружении командной оболочки теперь доступна переменная ARGV0, которой присвоено значение $0.
  • Добавлен оператор "test -N", определяющий время с наносекундной точностью.
  • Разрешена запись в переменную BASH_REMATCH.
  • В ulimit добавлена команда "-R" для просмотра и установки ресурса RLIMIT_RTTIME.
  • Вызов malloc на 64-разрядных системах теперь выравнивает возвращаемую память по 16 байтовой границе.
  • При выходе из командной оболочки bash теперь пытается закрыть все FIFO-каналы, независимо от того, завершены ли связанные с ними процессы.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_bash, #_shell
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 06:34
Часовой пояс: UTC + 5