22 Ноября 2024, 17:07

Bash

Автор ping_Win, 23 Февраля 2009, 17:19

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

ping_Win

23 Февраля 2009, 17:19 Последнее редактирование: 15 Февраля 2011, 12:04 от Zhek@Ch
[size="3"]Анонсирован выход Bash 4.0, лицензия изменена на Gplv3[/size]

Спустя 5 лет с момента выхода предыдущей ветки, представлен новый релиз командного интерпретатора Bash - 4.0. Исходные тексты программы, начиная с данного релиза, распространяются под лицензией GPLv3.

Из новых возможностей, появившихся в 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

turbo

02 Января 2010, 20:41 #1 Последнее редактирование: 15 Февраля 2011, 12:08 от Zhek@Ch
[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

Zhek@Ch

15 Февраля 2011, 12:10 #2 Последнее редактирование: 15 Февраля 2011, 12:11 от Zhek@Ch
[size="3"]Релиз командного интерпретатора Bash 4.2 [/size]

Вышла новая версия командного интерпретатора 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" без лидирующих знаков "#!";
  • При выполнении во вложенной оболочке (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", позволяющая определить типовой префикс для приоритетной начальной проверки соответствия элементов меню, который будет использован до цикличного просмотра списков.