bash / cygwin сломан после установки rtool?

Обычно я могу решать проблемы самостоятельно (и Google). Но в последнее время меня озадачивает эта странная икота.

Справочная информация. Я использую цепочку скриптов для обработки файлов (в Windows под Cygwin. Сценарии также запускаются на OS X с помощью gnu baseutil). Через один день после установки Rtools мои скрипты перестали работать. После долгих хлопот мне удалось выявить проблему.

  • Загрузите файл и канал в несколько команд
  • Как я могу программно добавлять записи в историю Bash и работать с метками времени?
  • Rsync-каталог, отфильтровывающий файлы и сохраняющие края (например, имена w / hyphen (-) chars)
  • Является ли cygwin вином, но для Linux-приложений?
  • Подскажите пароль sudo и программно повысите привилегию в скрипте bash?
  • Завершение вкладки не работает для аргументов, когда команда является псевдонимом
  • Проблема: у меня есть следующая строка:

    key=$( echo "$foo" | tr -d - | tr '[:upper:]' '[:lower:]' ) 

    где $foo – это еще одна текстовая переменная. Я удаляю тире в $foo и конвертирую его в нижний регистр. Сценарий работал тысячи раз.

    Но теперь это не так. Если я убегу

     echo "Blah-Bleh" | tr -d - | tr '[:upper:]' '[:lower:]' 

    Я получаю blahbleh который ожидается. Но если я это сделаю

     a=$(echo "Blah-Bleh" | tr -d - | tr '[:upper:]' '[:lower:]') echo $a 

    Я ничего не получаю. $a пуст, а [[-z $ a]] возвращает true . Однако, если я вернусь к старым backdick школам, команда снова работает:

     a=`echo "Blah-Bleh" | tr -d - | tr '[:upper:]' '[:lower:]'` echo $a 

    дает blahbleh .

    Теперь я могу заменить все подстановки команд более старым стилем, но это скорее обходное решение, чем решение. Итак, мой друг StackExchangers, что мне не хватает и как я его исправить? Это действительно раздражает.

    пс. Моя собственная диагностика пока:

    • Удаление Rtools не помогло;
    • Перезагрузка машины не помогла;
    • Переустановка каждого пакета Cygwin не помогла;
    • версия bash – 4.3.42 (4);
    • Прямо сейчас у меня нет абсолютно ничего в ~/.bashrc , ~/.bash_profile , ~/.profile , /etc/profile и /etc/bash.bashrc . Не знаю, до Rtools;
    • Я не вижу ничего плохого в $PATH .

  • Как получить выход из уже запущенной программы?
  • bash - Разделить значения «таблицы» в строки в массиве
  • Что такое `& gt; &` в простых терминах?
  • Как понять команду «cat> file_name << blah»?
  • Добавление вертикального пространства после команды в bash
  • Синтаксическая ошибка при экспликации сценария оболочки bash из busybox
  • One Solution collect form web for “bash / cygwin сломан после установки rtool?”

    Хорошо, после многих попыток и вытягивания волос мне удалось восстановить Cygwin в рабочем состоянии. Это то, что я сделал:

    1. Удалены Rtools
    2. Очищено и Windows% PATH% от всего, что связано с Cygwin / Rtools;
    3. Переустановил все пакеты Cygwin (из кеша);
    4. Восстановленный Cygwin;
    5. И перезагрузили компьютер чаще, чем нужно.

    Вернуться к работе…

    PS. Несмотря на то, что Cygwin снова работает, я обнаружил, что исходная строка, в которой я присваиваю значения массиву bash, больше не приводит к правильному результату. Пришлось изменить это

     read -r -a array <<<$(printf $string) 

    к этому

     array=($(printf $string)) 

    чтобы он работал. Должно быть, было обновление bash, должно быть.

    Linux и Unix - лучшая ОС в мире.