URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 109133
[ Назад ]

Исходное сообщение
"Релиз командного интерпретатора Bash 4.4"

Отправлено opennews , 17-Сен-16 00:14 
После двух с половиной лет разработки вышла (http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00018....) новая версия командного интерпретатора GNU Bash 4.4 (http://www.gnu.org/software/bash/), используемого по умолчанию в большинстве  дистрибутивов Linux. Одновременно состоялся (http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00019....) релиз библиотеки readline 7.0, применяемой в bash для организации редактирования  командной строки.


Из улучшений (http://git.savannah.gnu.org/cgit/bash.git/tree/NEWS?h=bash-4.4) можно отметить:


-  Во встроенной команде mapfile появилась возможность определения произвольного символа-разделителя записей (опция "-d");
-  Для почти всех команд реализована опция "--help" для вывода подсказки;
-  Добавлен шаблон ${parameter@spec} для применения преобразования к значению "parameter";
-  Во встроенной команде local появилась возможность указания аргумента "-" для сохранения состояния  однобуквенных shell-опций  и восстановления прошлых значений при выходе из функции;
-  Добавлена новая переменная EXECIGNORE, позволяющая определить имена, которые следует игнорировать при поиске команд;
-  Подготовлен начальный SDK для создания собственных  команд (загружаемых через "enable -f"), включающий набор заголовочных файлов  и фрагментов сценариев Makefile;
-  Bash теперь сохраняет статус выхода только для асинхронных заданий, что нарушает совместимость с прошлыми версиями в которых сохранялись статусы для всех заданий. Таким образом теперь нельзя использовать команду wait для получения статуса предыдущей синхронной команды;

-  В команду ulimit добавлены опции "-k" (kqueues) и -P (pseudoterminals).

URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00018....
Новость: https://www.opennet.ru/opennews/art.shtml?num=45163


Содержание

Сообщения в этом обсуждении
"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 00:14 
> Bash теперь сохраняет статус выхода только для асинхронных заданий, что нарушает совместимость с прошлыми версиями в которых сохранялись статусы для всех заданий. Таким образом теперь нельзя использовать команду wait для получения статуса предыдущей синхронной команды;

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 00:14 
интересно, нафига они это сделали?

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 00:15 
Фашизм, очевидно же.

"Релиз командного интерпретатора Bash 4.4"
Отправлено vantoo , 17-Сен-16 03:15 
Происки Госдепа, не иначе!

"Релиз командного интерпретатора Bash 4.4"
Отправлено РОСКОМУЗОР , 17-Сен-16 11:17 
Данное изменение предложено лично Бараком Обамой. Юзайте православную версию, там всё по старому.

"Релиз командного интерпретатора Bash 4.4"
Отправлено freehck , 17-Сен-16 12:58 
Хм. wait для получения статуса *синхронной* команды? А кто его вообще для этого юзал? Как он умудрился это сделать, и главное -- зачем это понадобилось?

Я вот думал, что wait только для асинхронных команд можно использовать. Или отдельные умельцы шлют SIGCONT остановленному процессу синхронной команды, и натравливают на него wait?


"Релиз командного интерпретатора Bash 4.4"
Отправлено EHLO , 18-Сен-16 14:09 
> Я вот думал, что wait только для асинхронных команд можно использовать. Или
> отдельные умельцы шлют SIGCONT остановленному процессу синхронной команды, и натравливают
> на него wait?

Остановленный процесс это уже асинхронная команда.

Я с интересом для себя обнаружил, что:

$bash -c 'echo $$;exit 33'
2737
$bash -c 'echo $$;exit 44'
2738
$wait 2738 ; echo $?
44
$wait 2737 ; echo $?
33
$wait 2738 ; echo $?
44

Отключили вероятно для оптимизации. Помнить все PIDы может оказаться накладно в гипотетической ситуации.


"Релиз командного интерпретатора Bash 4.4"
Отправлено freehck , 18-Сен-16 23:38 
Спасибо, очень интересная штука. Хм. Была.


"Релиз командного интерпретатора Bash 4.4"
Отправлено анон , 17-Сен-16 00:59 
zsh лучше

"Релиз командного интерпретатора Bash 4.4"
Отправлено Виталик , 17-Сен-16 02:18 
Только на маке, на линуксе он какой-то глючный.

"Релиз командного интерпретатора Bash 4.4"
Отправлено leap42 , 17-Сен-16 02:33 
vi-mode или emacs? с последним уже много лет проблем не замечал. может, дистро-специфичные проблемы? баг уже отрепортили?

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 02:38 
Думаю автор имел в виду Debian based багу.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Вы забыли заполнить поле Name , 17-Сен-16 03:07 
Думаю, автор яблодрочер.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 06:45 
Автор имел ввиду не пойми что. Debian Jessie, ZSH 5.0.7, проблем не наблюдаю.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Виталик , 17-Сен-16 09:57 
Короче рассказываю. Как была шумиха вокруг shellshock я решил что баш не безопасен и пора сваливать на zsh (я тогда только недавно перешел на GNU+Linux). Так как настраивать с нуля желания не было скачал с гитхаба oh-my-zsh, так что возможно вина в глючности лежит не на самом zsh, а на этом конфиге)
Вот список глюков встреченных за 2 дня использования:
- при длинном названии working directory шрифт коцался и становился нечитаемым
- если нажать энтер 2 раза быстро после ответа на какой-то readline вопрос все коцалось и писалось не на тех рядках, где должно
- иногда он просто не работал, окошко терминала просто становилось пустым и надо было открывать новую вкладку
При том всем на макбуке мамки oh-my-zsh работает отлично без подобных проблем.
В общем я потом попробовал fish и остался им доволен аки слон, там все стабильно, быстро и удобно. С тех пор пользуюсь им чего и вам советую.
P.S. на сайте zsh оглавление мануала размечено с помощью тегов definition list, уже одно это говорит что у авторов не в порядке с головой и чего стоит ожидать от их продукта.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 11:06 
oh-my-zsh
использовать крайне не рекомендуется, по причие тормазнутости.
посмотрите сколько времени идет запуск.
for i in $(seq 1 10); do /usr/bin/time zsh -i -c exit; done

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 11:54 
oh-my-zsh -- та ещё помойка с понадёрганными со всего интернета рецептами для плагинов. Для начала лучше  использовать grml.

"Релиз командного интерпретатора Bash 4.4"
Отправлено freehck , 17-Сен-16 12:40 
oh-my-zsh -- помойка, у которой дефолты начисто подвешивают консоль (Зато красиво! Им, понимешь ли, красиво хотелось, а то, что по секунде ждать следующего приглашения консоли - это им плевать).

Мне лично хватает git://github.com/zsh-users/zsh-syntax-highlighting.git
Плюс разумеется bash-completion и своего немного там понавешал.


"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним84701 , 17-Сен-16 16:29 


> P.S. на сайте zsh оглавление мануала размечено с помощью тегов definition list,
> уже одно это говорит что у авторов не в порядке с головой и чего стоит ожидать от их продукта.

Нет, это говорит о том, что уважаемому  диванному аналитику опеннета стоило посмотреть хотя бы на cлона^W мета-данные, прежде чем делать так далеко идущие выводы:

> <!-- Created by GNU Texinfo 6.0, http://www.gnu.org/software/texinfo/ -->
> <meta name="Generator" content="texi2any">


"Релиз командного интерпретатора Bash 4.4"
Отправлено vantoo , 17-Сен-16 03:17 
Вы хотели сказать KSH.

"Релиз командного интерпретатора Bash 4.4"
Отправлено asavah , 17-Сен-16 17:21 
CSH же!

"Релиз командного интерпретатора Bash 4.4"
Отправлено intelfx , 17-Сен-16 05:11 
`mapfile -d` -- вау, годно!

Ещё бы запилили применение нескольких модификаторов подстановки за один раз (как в zsh, через двоеточие) -- цены бы не было.


"Релиз командного интерпретатора Bash 4.4"
Отправлено Наркоман , 17-Сен-16 08:12 
Есть вообще шелл с человеческим синтаксисом?

"Релиз командного интерпретатора Bash 4.4"
Отправлено DeerFriend , 17-Сен-16 08:27 
Пёрл?

"Релиз командного интерпретатора Bash 4.4"
Отправлено Blind Vic , 17-Сен-16 09:24 
xonsh?

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 10:44 
Есть, оберон называется.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Стог сена , 17-Сен-16 13:34 
в армии есть, но там терминалов нет.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 20:24 
> в армии есть, но там терминалов нет.

Если бы там побывал, то знал бы, что терминалы там есть. Ах с советских времён.



"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 19:07 
PowerShell, ха-ха

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 00:38 
fish

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 01:58 
Бери баш и ebash. Очевидно же. Не нравится - пиши свой. Как сделаешь человеческим, не удивляйся реакции человеков.

А если серьезно, ты скорее всего не прочел полную справку на баш, он вполне, поэтому и стал стандартом.


"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 12:12 
> стал стандартом

шта?


"Релиз командного интерпретатора Bash 4.4"
Отправлено Андрей Заикин , 17-Сен-16 09:49 
Ждем теперь появления OpenBASH, NetBASH и FreeBASH

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 17-Сен-16 13:42 
LibreBASH же.

"Релиз командного интерпретатора Bash 4.4"
Отправлено iCat , 17-Сен-16 19:19 
MS BASH

"Релиз командного интерпретатора Bash 4.4"
Отправлено Онаним , 17-Сен-16 23:45 
Кстати а может кто объяснить зачем люди ломают мозги и пишут bash-скрипты когда есть Python и много других более интуитивных и более мощных языков? Просто любопытно.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 01:21 
А что тут объяснять? Это очевидно любому специалисту. Где-то удобнее bash, где-то python.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Led , 18-Сен-16 01:52 
> когда есть Python и много других более интуитивных и более мощных
> языков?

"понятный даже дебилу" != "интуитивный и мощный для не-дебила".


"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 02:06 
Любой вопрос возникает от незнания. В данном случае ты не знаешь, что непосредственно в  шеле можно выполнять последовательности команд, а после выполнения, их полезно куда-то сохранить. Так и появляются bash-скрипты. Когда в командной строке синтаксис python дойдёт до степени удобства bash, то можно будет обсудить поставленный вопрос, а пока сравнение из серии сравнения ежа с носорогом.

"Релиз командного интерпретатора Bash 4.4"
Отправлено angra , 18-Сен-16 11:02 
Причин несколько.
1. Самая распространенная заключается в незнании большинством админов ЯП общего назначения вроде питона, перла, рубина.
2. Некоторые скриптовые языки чаще всего отбрасываются из-за их отсутсвия по дефолту в любом линуксе, в отличии от перла и питона. Прощай рубин.
3. Скрипт зачастую вырастает из однострочника, а значит с питоном тоже прощаемся.
4. Некоторые задачи таки удобней сделать на шелле, так как в них больше половины работы приходится на внешние утилиты.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 18-Сен-16 18:07 
Полностью согласен. Почти всегда мои башескрипты начинаются с однострочника, но иногда, на втором часе правок и попыток я говорю себе "лучше бы сразу взял Питон". Но когда делать на последнем лень, часто спасает python -c и inline script.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Масик , 21-Сен-16 09:03 
Не знаю как у вас, а наши админы знают perl и python иногда не хуже разработчиков. Но пользуются часто и bash-скриптами.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 19-Сен-16 06:58 
> Python

Зачем мне ЭТО в системе? А bash\sh везде есть.


"Релиз командного интерпретатора Bash 4.4"
Отправлено gnu hater , 19-Сен-16 08:50 
python поставляется почти со всеми дистрами(по крайней мере популярными) так же как и perl.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Happy_demon , 19-Сен-16 09:10 
не скажу за линуксы, но во фре, начиная с версии кажется 6что-то_там перла по умолчанию нет.

"Релиз командного интерпретатора Bash 4.4"
Отправлено gnu hater , 19-Сен-16 11:02 
во freebsd и bash по умолчанию не поставляется на сколько мне известно.

"Релиз командного интерпретатора Bash 4.4"
Отправлено _ , 19-Сен-16 18:28 
Всё правильно известно.

Ещё в до-мезозойскую эру отцы основатели сказали что то типа интерактивным шеллом можешь иметь что хочешь, но для скриптов пользуй #!/bin/sh Luke! And Power will be with you ...
(ну и ещё много какашек на csh как шелл для скриптов ... да кто это помнит уже :)
У меня например руки сами бактики набирают вместо $()  :)

Хотя по нынешним временам, когда зайдя по ssh в 99% увидишь линукс и баш ... стоит ли йУнным париЦЦо?!


"Релиз командного интерпретатора Bash 4.4"
Отправлено Led , 19-Сен-16 21:12 
> У меня например руки сами бактики набирают вместо $()  :)

$() - POSIX shell
Но ты и дальше "бактики" набивай...


"Релиз командного интерпретатора Bash 4.4"
Отправлено Anonn , 19-Сен-16 09:13 
Какой версии?

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 20-Сен-16 11:17 
И ввиду "некоторых несовместимостей" (не)работает по разному, с utf-8 тоже интересная история.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 19-Сен-16 14:47 
> А bash везде есть.

Распространённое заблуждение.


"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 21-Сен-16 07:13 
> Распространённое заблуждение.

Конечно, ведь я написал ещё про sh. Только не говорите, что busybox не везде есть. Никогда не поверю.


"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 21-Сен-16 21:50 
sh есть везде. А sh == bash -- распространенное забдуждение. Я вас не правильно понял.

"Релиз командного интерпретатора Bash 4.4"
Отправлено Аноним , 23-Сен-16 09:42 
Ключевая фраза: "Bash теперь сохраняет статус выхода только для асинхронных заданий, что нарушает совместимость с прошлыми версиями"...
Синдром Поттеринга -- страшная заразная болезнь нашего времени.

"Релиз командного интерпретатора Bash 4.4"
Отправлено jidckii , 20-Мрт-17 16:27 
Я правильно понимаю, что вот такая конструкция у меня перестанет работать с версии 4.4  ??

<code>  if [[ -d "$dalet_path" ]];then
    cp $end_path$end_file_name.$CONTAINER $dalet_path$FORMAT_PATH >> $LOG_FILE 2>&1 & pid_cp=$!
  else
    log_info "\e[1;31m Ошибка при копировании в DALET, путь не найден \e[0m"
  fi
  
  if [[ -d "$frank_path$date_dir" ]];then
    cp -R $source_path* $frank_path$date_dir$v_hd >> $LOG_FILE  2>&1 & pid_cp1=$!
  else
    log_info "\e[1;31m Ошибка при копировании на FRANK, путь не найден \e[0m"
  fi
  
  if [[ -d "$frank_path$date_dir" ]];then
    cp $end_path$end_file_name.$CONTAINER $frank_path$date_dir$dlya_montaja >> $LOG_FILE 2>&1 & pid_cp2=$!
  else
    log_info "\e[1;31m Ошибка при копировании на FRANK, путь не найден \e[0m"
  fi
  
  wait $pid_cp2
  if [[ "$?" -ne 0 ]]; then
    log_info "\e[1;31m Ошибка во время копирования готового на FRANK \e[0m "
    return 1
  fi
  
  wait $pid_cp1
  if [[ "$?" -ne 0 ]]; then
    log_info "\e[1;31m Ошибка во время копирования исходников на FRANK \e[0m "
    return 1
  fi
  
  wait $pid_cp
  if [[ "$?" -ne 0 ]]; then
    log_info "\e[1;31m Ошибка во время копирования готового в DALET \e[0m"
    return 1
  fi
</code>