Новости и события » Hi-Tech » Релиз командного интерпретатора Bash 5.0

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

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

Значительное изменение номера версии Bash связано с внесением изменений, нарушающих обратную совместимость. В новой версии переработан код, связанный с обработкой ссылочных переменных nameref, что привело к отдельным изменениям поведения при использовании nameref (например, цикл разбора имен nameref внутри функций теперь приводит к определению переменных не в локальном, а в глобальном контексте). Кроме того, по умолчанию переменные BASH_ARGC и BASH_ARGV теперь выставляются только при включении расширенного отладочного режима, что позволило избавиться от проблем с производительностью при передаче скриптами большого числа аргументов. Для работы нового выпуска необходимо наличие свежей библиотеки readline, т. е. для установке Bash 5.0 в дистрибутивах с выпусками readline до 8.0 потребуется переустановка readline или встраивание новой версии библиотеки при сборке Bash.

Из улучшений можно отметить:

  • Предложены новые переменные окружения: BASH_ARGV0 (принимает значение $0), EPOCHSECONDS (эпохальное время в секундах) и EPOCHREALTIME (эпохальное время с точностью до микросекунд);
  • Во встроенную команду "history" добавлена поддержка выборочного удаления записей из БД с историей операций ("history -d start-end") и возможность указания отрицательных значений в качестве смещения первой удаляемой записи относительно конца списка (например, "-1" указывает на предыдущую команду);
  • Добавлена опция "localvar_inherit", при установке которой локальные переменные наследуют значение переменный с теми же именами, определенными в вышестоящей области видимости;
  • Добавлена опция "assoc_expand_once", при установке которой оболочка осуществляет раскрытие индексов ассоциативных массивов только один раз;

  • Включена по умолчанию опция "globasciiranges", допускающая использование масок для определения диапазонов символов ([a-z]);
  • Добавлены встроенные реализации команд rm, stat, seq и fdflags;
  • Во встроенной команде "wait" обеспечена возможность ожидания замещения последнего процесса и добавлена опция "-f" для ожидания завершения процесса или работы вместо ожидания изменения состояния;
  • Добавлена возможность жесткого определения в файле config-top.h значений $PATH и $HISTSIZE. Данные значения будут более приоритетными, чем значения из переменных окружения и могут применяться для создания ограниченных окружений;
  • При автодополнении ввода теперь не учитывает регистр символов для имен функций и псевдонимов (alias), если в readline выставлен режим completion-ignore-case;

  • Во встроенной команде "umask" разрешено использование режимов доступа и масок, превышающих восьмеричное значение 777;
  • Во встроенной команде "times" в зависимости от настройки локали теперь может выводиться не только точка, но и запятая в качестве разделителя дробных значений;
  • Добавлена отключенная по умолчанию и недокументированная опция для включения отправки истории команд в syslog;
  • Встроенная реализация malloc переведена на использование mmap для обеспечения запроса блоков, размером больше 128 Кб, и возможности возврата страниц памяти ядру после выполнения mfree;

  • В качестве индексов ассоциативных массивов теперь могут использоваться строки, состоящие только из символов пробела;

  • В разряд видимых переведены ранее недокументированные опции localvar_unset и progcomp_alias;
  • Переменная "$_" теперь не меняет свое значение, когда shell запускает команду, выполняющую fork.

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх