[size="3"]Анонсирован выход Bash 4.0, лицензия изменена на Gplv3[/size]
Спустя 5 лет с момента выхода предыдущей ветки, представлен (http://tiswww.case.edu/php/chet/bash/bashtop.html#CurrentStatus) новый релиз командного интерпретатора Bash (http://tiswww.case.edu/php/chet/bash/bashtop.html) - 4.0. Исходные тексты программы, начиная с данного релиза, распространяются под лицензией GPLv3.
Из новых возможностей (http://tiswww.case.edu/php/chet/bash/NEWS), появившихся в bash 4.0 с момента выпуска прошлого релиза bash 3.2, можно отметить:
* Реализована новая опция "autocd", при включении которой появляется возможность быстрого перехода в директории через ввод имени директории вместо команды (т.е. выполнение в интерактивной оболочке "dir" будет эквивалентно запуску "cd dir");
* Если заданная команда не найдена, оболочка теперь пытается выполнить shell функцию с именем "command_not_found_handle", в которую в качестве аргументов передаются параметры не найденной команды;
* Добавлена реализация поддержки ассоциативных массивов, которые могут быть созданы при помощи декларатора "-A". Формат: name[subscript]=value, обращение к элементу ${name[subscript]};
* Изменен формат встроенной документации, который теперь напоминает man-страницы. Изменен метод сортировки вывода в команде help. К команду help добавлены опции "-d" (вывод короткого списка описаний) и "-m" (вывод в помощи в формате man-страниц);
* Система автодополнения претерпела ряд небольших усовершенствований, например, добавлена начальная поддержка дополнения глобальных переменных в командах. Новая опция "dirspell" позволяет включить механизм корректировки орфографии при автодополнении имен файлов и директорий. Расширены возможности программирования обработчиков автодополнения;
* Изменено поведение встроенной функции read в момент истечения заданного таймаута, который можно задать через опцию "-t". Теперь при этом возвращается код ошибки больше 128 и сохраняются частично полученные до таймаута данные. Кроме того, таймаут теперь может принимать дробные значения. Дополнительно в read добавлена новая опция "-i", которая позволяет при использовании readline поместить введенный текст в буфер ответа (reply buffer);
* Новая опция "checkjobs" для проверки наличия активных или приостановленных заданий перед выходом и вывода предупреждения, если такие имеются;
* В переменной $BASHPID теперь сохраняется идентификатор (pid) текущего процесса.
* Если из-за недостатка ресурсов bash не удалось создать дочерний процесс, то перед выводом ошибки осуществляется еще несколько попыток;
* Размер блока для опций "-c" и "-f" команды ulimit приведен в соответствие с Posix и теперь равен 512 байтам при активном Posix режиме. В ulimit добавлены новые опции -b (размер буфера сокета) и -T (число нитей);
* Добавлена новая встроенная команда "mapfile" (плюс добавлен синоним "readarray") для заполнения массива на основе строк указанного файла;
* Реализована новая опция "globstar", при включении которой под маску "**" подпадают все директории и файлы с использованием рекурсивного перебора;
* Добавлен новый оператор редиректа "&>>", который добавляет стандартный вывод и стандартный поток ошибок к заданному файлу;
* Для дополнения передаваемого следующему процессу стандартного вывода потоком ошибок, вместо конструкции "2>&1 теперь можно использовать синоним "|&";
* Реализовано несколько новых терминирующих конструкций в системе обработки "case" списков: ";&" (запустить действие приписанное к следующему шаблону) и ";;&" (продолжить проверку следующих шаблонов).
* Оболочка распознает новую команду для обрезание длинных путей PROMPT_DIRTRIM. В качестве значения указывается длина пути. После превышения заданной длины в приглашении ввода будет осуществлено обрезание длинных путей, заменяя конец на "...";
* Новые средства для приведения определенных символов в строке к верхнему или нижнему регистру: uppercase (^[^]) и lowercase (,[,]). В команде declare появилась поддержка преобразования регистра через указание опций -l (lowercase) и -u (uppercase);
* Для управления асинхронным выполнением команд добавлено ключевое слово "coproc";
* Ощутимо расширены возможность библиотеки readline и shell биндинга к ней, добавлено около десятка новых функций.
http://www.opennet.r...shtml?num=20409 (http://www.opennet.ru/opennews/art.shtml?num=20409)
[size="3"]Релиз BASH 4.1[/size]
Доступна новая версия командного интерпретатора Gnu Bash 4.1.
Новшества, реализованные с момента выхода bash 4.0:
* В функцию read добавлена поддержка опции "-N число_символов", позволяющей считать из входного потока только заданное число символов;
* При проверке статуса файлов (исполняемый, доступный на чтение и т.п.) теперь учитываются системные ACL для поддерживающих их файловых систем;
* Bash теперь пропускает к дочерним процессам переменные окружения в которых использованы недопустимые имена переменных;
* Readline-функция "execute-unix-command" теперь пытается очистить и заново использовать текущую строку, вместо перехода к следующей строке после выполнения заданной команды;
* "printf -v" теперь позволяет назначить значение массиву индексов;
* Добавлены опции "complete -E" и "compopt -E" для работы с "пустыми" дополнениями (определяют правила дополнения пустой командной строки). Другая новая опция "-D" в complete/compgen/compopt определяет дополнение, используемое по умолчанию, что может быть использовано для формирования сложной монгоуровневой логики автодополнения;
* При отображении ассоциативных массивов, ключевые элементы теперь выводятся в кавычках;
* dabbrev-expand приведен к emacs-подобному стилю: после совпадения не добавляются пробелы, дополнения не сортируются, наиболее старые элементы истории выводятся в первую очередь;
* Команды "[[" и "((" теперь можно обрабатывать через 'set -e' и ERR trap;
* Оператор включения файлов "source/." теперь удаляет нулевые символы из файла перед парсингом команд;
* Через изменение конфигурационных параметров config-top.h теперь можно настроить перенаправление истории операций в syslog;
* Добавлена переменная $BASHOPTS для экспорта всех опций shell, установленных для дочерних процессов через shopt;
* Добавлена переменная $BASH_XTRACEFD, при установке в которую целого числа, bash начинает генерировать отладочный xtrace вывод в указанный файловый дескриптор;
* Операторы "<" и ">" внутри условия "[[" теперь могут использоваться для сравнения строк с учетом текущей локали;
* Встроенные функции mapfile/readarray больше не сохраняют выполненные команды в списке истории работы;
* Для включения режима совместимости с bash 4.0 для shopt подготовлена опция compat40;
* Расширены возможность библиотеки readline и shell биндинга к ней, добавлено несколько новых функций (menu-complete-backward, skip-csi-sequence, rl_filename_rewrite_hook) и переменных (skip-completed-text, echo-control-characters, enable-meta-key).
http://www.opennet.r...shtml?num=24884 (http://www.opennet.ru/opennews/art.shtml?num=24884)
[size="3"]Релиз командного интерпретатора Bash 4.2 [/size]Вышла (http://ftp.gnu.org/gnu/bash/) новая версия командного интерпретатора GNU Bash 4.2 (http://www.gnu.org/software/bash/). Из улучшений можно отметить:
- Для команд 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" без лидирующих знаков "#!";
- При выполнении во вложенной оболочке (subshell) команд замены, функций и встроенных команд, идентифицирующая trap строка теперь не сбрасывается до момента установки нового trap-а, что позволяет использовать $(trap) для просмотра trap-а вызывающей оболочки;
- Команда "trap -p" теперь отображает сигналы, игнорированные при запуске bash;
- Изменен метод разбора POSIX-нотации, который теперь допускает указание в блоках "! time command" нескольких выражений "! time" подряд;
- Блоки $((...)) теперь всегда разбираются в первую очередь как арифметические выражения (ранее вначале выполнялся разбор потенциально возможного указания вложенных команд);
- Во встроенной команде mapfile добавлена поддержка третьего аргумента, указывающего на callback-команду, которой будет передан номер последнего элемента заполненного массива;
- Добавлена новая опция "compat41", включающая режим совместимости с Bash 4.1;
- Во встроенную команду "cd" добавлена поддержка определенной в POSIX опции "-e";
- Добавлена новая опция оболочки "lastpipe", позволяющая запустить последнюю команду из конвейера (pipeline) в контексте текущей оболочки;
- Элементы режима POSIX-совместимости приведены в соответствие со стандартом POSIX 2008.
Изменения в библиотеке Readline:
- Функции сохранения истории более не пытаются создать файл в текущей директории, если переменная $HOME не установлена, так как это может привести к проблемам с безопасностью в случае, если имя файла истории не определено в приложении;
- Добавлена новая переменная "completion-display-width", в которой может быть указано число столбцов, используемых для отображения вариантов автозавершения строки;
- Добавлена новая переменная "completion-case-map", позволяющая определить карту идентичности символов для режима автодополнения без учета регистра, например, уровнять "-" и "_";
- Добавлена новая переменная "menu-complete-display-prefix", позволяющая определить типовой префикс для приоритетной начальной проверки соответствия элементов меню, который будет использован до цикличного просмотра списков.
# opennet.ru (http://www.opennet.ru/opennews/art.shtml?num=29591)