Вышла новая версия командного интерпретатора GNU Bash 4.2.
Из улучшений можно отметить:
- Для команд declare/typeset добавлена новая опция «-g», при указании которой переменные имеют глобальную область видимости, т.е. видны даже в отдельных функциях;
- Указание отрицательного индекса массива теперь не приводит к ошибке и воспринимается как обратное смещение от конца массива;
- Отрицательный размер, указанный в блоке ${var:offset:length} теперь не приводит к ошибке и воспринимается как обратное смещение от конца переменной;
- В блоки $’…’, echo и printf добавлено распознавание escape-последовательностей uXXXX и UXXXXXXXX;
- В команде test/[/[[ добавлена поддержка оператора «-v», который возвращает «истину» в случае установки указанной в качестве аргумента переменной;
- Команда «time» теперь может использоваться для вывода времени выполнения текущего shell и дочерних процессов;
- Добавлена переменная FUNCNEST, которая позволяет ограничить уровень вложенности выполняемых функций, что позволяет предотвратить ситуацию бесконечной рекурсии;
- Во встроенной команде printf добавлена поддержка спецификатора «%(fmt)T», позволяющего указать формат вывода времени в стиле strftime;
- Выполнение «exec -a foo» теперь устанавливает в переменную $0 выполняемого скрипта имя «foo» без лидирующих знаков «#!»;
- При выполнении в суб-shell команд замены, функций и встроенных команд, идентифицирующая trap строка теперь не сбрасывается до момента установки нового trap-а, что позволяет использовать $(trap) для просмотра trap-а вызывающего shell;
- Команда «trap -p» теперь отображает сигналы, игнорированные при запуске shell;
- Изменен метод парсинга posix-нотации, который теперь допускает указание в блоках «! time command» нескольких выражений «! time» подряд;
- Блоки $((…)) теперь всегда разбираются в первую очередь как арифметические выражения (ранее вначале выполнялся разбор потенциально возможного указания вложенных команд);
- Во встроенной команде mapfile добавлена поддержка третьего аргумента, указывающего на callback-команду, которой будет передан номер последнего элемента заполненного массива;
- Добавлена новая опция «compat41», включающая режим совместимости с Bash 4.1;
- Во встроенную команду «cd» добавлена поддержка определенной в Posix опции «-e»;
- Добавлена новая shell-опция «lastpipe», позволяющая запустить последнюю команду из pipeline в контексте текущего shell;
- Элементы режима POSIX-совместимости приведены в соответствие со стандартом POSIX 2008.
Изменения в библиотеке Readline:
- Функции сохранения истории более не пытаются создать файл в текущей директории, если переменная $HOME не установлена, так как это может привести к проблемам с безопасностью в случае, если имя файла истории не определено в приложении;
- Добавлена новая переменная «completion-display-width», в которой может быть указано число столбцов, используемых для отображения вариантов автозавершения строки;
- Добавлена новая переменная «completion-case-map», позволяющая определить карту идентичности символов для режима автодополнения без учета регистра, например, уровнять «-» и «_»;
- Добавлена новая переменная «menu-complete-display-prefix», позволяющая определить типовой префикс для приоритетной начальной проверки соответствия элементов меню, который будет использован до цикличного просмотра списков.