LINUX.ORG.RU

Вышел bash 5.0

 , ,


3

7

Почти через 10 лет после выхода bash 4.0 и чуть больше чем через 2 года после выхода bash 4.4 состоялся релиз пользовательской оболочки и интерпретатора скриптов версии 5.0.

В новой версии:

  • Встроенная команда «wait» теперь ждёт создания замены последнего процесса;
  • Новые переменные $EPOCHSECONDS и $EPOCHREALTIME, которые раскрываются в секунды с начала эпохи Unix с точностью до секунд и с точностью до микросекунд соответственно;
  • Новые загружаемые встроенные команды: rm, stat, fdflags;
  • Новая переменная $BASH_ARGV0, которая раскрывается в $0 и устанавливает $0 в назначение;
  • При передаче числового аргумента readline'овская команда shell-expand-line больше не удаляет кавычки и подавляет замену команды и процесса;
  • Команда «history -d» теперь понимает отрицательные аргументы как сдвиг с конца истории команд;
  • При передаче аргумента «name» команде «coproc» теперь активируется режим раскрытия слов, таким образом уникальные coproc'ы теперь могут быть созданы в циклах;
  • Цикл раскрытия имён из именных ссылок в функциях теперь раскрывает их в имена переменных в глобальной области видимости;
  • У встроенной команды «wait» теперь появилась опция "-f", которая указывает ждать полного завершения процесса вместо изменения его состояния;
  • Теперь появилось определение в файле config-top.h, которое позволяет оболочке в ограниченном режиме переопределять статическое значение $PATH независимо от содержимого при запуске;
  • Теперь замена процессов не наследует опцию «v» в отличие от замены команд;
  • Теперь если оболочка в неинтерактивном режиме с включенным управлением процессами замечает, что основноц процесс завершился с SIGINT, то ведёт себя как при получении SIGINT;
  • Теперь Posix режим включает единожды запускаемую SIGCHLD ловушку для каждого завершающегося процесса-потомка даже если управление процессами отключено;
  • Новая shopt опция: localvar_inherit; Если она установлена, то локальная переменная наследует значение переменной с таким же именем в ближайшей предшествующей области видимости; Однако, значения переменных несовместимых типов (например, индексированный массив вместо ассоциативного массива) наследоваться не будут;
  • «bind -r» теперь проверяет связана ли указанная последовательность прежде чем связать её с NULL'ом во избежание создания раскладок для многоклавишных последовательностей;
  • Числовой аргумент для команды «operate-and-get-next» теперь указывает какую строку из истории команд нужно редактировать;
  • Позиционные параметры теперь определяются до запуска стартовых файлов, а потому в них теперь стало можно использовать $@;
  • Появилась новая опция, которая доступна на этапе компилирования, которая позволяет отключить проверку того, чтобы наследованная $OLDPWD была директорией;
  • Встроенная команда «history» теперь может удалять диапазоны команд из истории через "-d начало-конец";
  • Встроенная привязываемая команда «vi-edit-and-execute-command» теперь переводит readline обратно в режим вставки vi после выполнения команд из редактируемого файла;
  • Дополнение команд теперь учитывает соответствия алиасам и именам функций оболочки без учёта регистра если установлена переменная completion-ignore-case;
  • Новая опция оболочки «assoc_expand_once», которая включает попытку раскрытия индексов ассоциативных массивов только единожды;
  • Теперь оболочка устанавливает $BASH_ARGV и $BASH_ARGC при запуске только при включенном расширенном отладочном режиме, в то время как раньше они устанавливались независимо от дополнительных условий;
  • Встроенная команда «umask» теперь позволяет указывать режимы и маски больше чем восьмеричное 777;
  • Встроенная команда «times» теперь учитывает локаль при выводе разделителя между целой и дробной частями десятичного числа;
  • В наличии новая, отключенная по умолчанию и незадокументированная опция оболочки, которая позволяет включать и отключать отправку истории команд syslog'у во время их выполнения;
  • Больше нельзя определять переменные перед специальными встроенными командами, которые изменяют атрибуты переменных, а затем возвращают их обратно в исполняемую среду, до тех пор пока уровень совместимости не установлен в 44 или меньше;
  • Теперь можно определять дефолтное значение $HISTSIZE во время компиляции в файле config-top.h;
  • Встроенная команда «complete» теперь принимает опцию "-I", которая указывает что нужно дополнять первое слово в строке;
  • Встроенная в bash malloc() теперь использует mmap() (по возможности) для удовлетворения запросов более чем 128 Кб, таким образом free() теперь может задействовать mfree() для возвращения страниц памяти ядру;
  • Опция «globasciiranges» теперь включена по дефолту и может быть отключена при компиляции;
  • Индексированные и ассоциативные массивы теперь разрешают индексы состоящие исключительно из пробелов;
  • Опция «checkwinsize» теперь включена по дефолту;
  • shopt опции «localvar_unset» и «progcomp_alias» теперь видимы и задокументированы;
  • Обработчик имён сигналов теперь понимает имена от «SIGRTMIN+n» до «SIGRTMAX»;
  • Новая загружаемая встроенная команда seq;
  • Выполнение ловушек теперь учитывает внутренние вызовы «eval»;
  • Переменная $_ теперь не меняется при выполнении форкающей команды;
  • Встроенная команда «kill» теперь принимает такие аргументы как -sSIGNAME и -nSIGNUM даже если соответствующие программы не поддерживают соответствующие сигналы;
  • В Posix режиме теперь включена «shift_verbose» опция;

Новое в библиотеке readline:

  • Неинкрементирующий поиск в vi-режиме ('N', 'n') теперь может искать шаблон оболочки в соответствии со спецификацией Posix (при доступности используется fnmatch());
  • Доступны новые назначаемые команды «next-screen-line» и «previous-screen-line», которые перемещают курсор в тот же самый столбец следующей или предыдущей строки соответственно;
  • Доступны дефолтные привязки клавиш для control-arrow-key комбинаций;
  • Отрицательный аргумент "-N" команды quoted-insert теперь означает вставку следующих N символов используя quoted-insert;
  • Новая публичная функция rl_check_signals(), которая позволяет приложениям отвечать на сигналы, которые ловит readline пока ожидает ввода используя кастомную функцию чтения;
  • Теперь доступна проверка условий относительно версии readline прямо в файле inputrc; Для этого была внедрена своя собственная реализация сравнения: поддерживаемые операторы «равно» и «неравно», строковые переменные могут сравниваться с числами, двоичные переменные должны сравниваться с «on» и «off», имена переменных от операторов отделяются пробелами;
  • Библиотека для раскрытия истории теперь понимает замену команд и процессов, расширенную универсализацию и позволяет появляться им где угодно в словах;
  • Библиотека истории теперь содержит новую переменную, которая разрешает приложенгиям устанавливать начальное состояние закавычивания, таким образом состояние закавычивания может наследоваться от предыдущей строки;
  • Новая публичная функция rl_set_keymap_name() для установки и использования определяемых приложениями имён раскладок;
  • Клавиша «Insert» на цифровом блоке, если доступна, теперь переводит readline в режим перезаписи;

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: shell-script (всего исправлений: 2)

Встроенная команда «wait» теперь ждёт создания замены последнего процесса;

Перевод гугль-траслятором?

Интересно, они догадаются сделать когда-нибудь, чтобы «wait» ожидал любой из запущенных фоновых процессов, а не все/указанные? Сразу станет не нужным рекламируемый TC-ом «parallel».

vodz ★★★★★
()
Ответ на: комментарий от saahriktu

Нет.

Ну так может объясните хотя бы вот первую строку? На лицо дословный перевод первых попавшихся значений слов, без учёта, что на русском получается набор слов.

Его рекламирую не я.

Да ладно. А кто же ещё так усиленно постит их переодичные версии. Ваш робот для постинга сюда новостей?

vodz ★★★★★
()
Ответ на: комментарий от vodz

На лицо дословный перевод

Как будто бы он может быть другим в новостях. Чтобы переводить иначе нужно знать что именно пытался выразить автор Changelog'а. А кто же знает о чём он там пишет?

А кто же ещё так усиленно постит их переодичные версии

Бывший bodqhrohro_promo же, который теперь Moondancer.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Moondancer

Киллер-фича parallel — не распараллеливание как таковое, а сбор вывода в правильном порядке.

Логгинг через дескриптор на процесс в основном процессе параллелизатора дело не сложное даже на bash. Основная проблема bash в том, что чисто системно сделать wait с ключём — ожидать любой из предложенного списка фоновых процессов сделать внутри C-программ не сложно, так как это поведение этого сискола по умолчанию, а вот из bash-скрипта принципиально не возможно без тупого цикла проверки статуса списка задач и идиотского sleep.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.