1. bash / Говнокод #27769

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    #!/usr/bin/env bash
    
    URL=https://foo.bar/baz.zip
    PATH=/home/foo/bar/baz.zip
    
    wget -O "$PATH" "$URL"

    И только потом до мена дошло…

    Запостил: ISO, 26 Октября 2021

    Комментарии (12) RSS

    • "$PATH"
      Смысле спать?! Роботай давай.
      Ответить
    • Поясните не линуксоиду, что тут не так.
      Ответить
      • Переменная PATH хранит пути к исполняемым файлам. Если её испортить, исполняемые файлы перестанут находиться (в данном шелле). В винде она тоже есть, вроде.
        Ответить
        • У винды ещё есть долбанутое ограничение на длину, которое замечательно сочетается с любовью майкрософта и ко к длинным именам...

          В итоге после установки очередной проги PATH в реестре необратимо повреждается. И его надо чистить вилкой.
          Ответить
          • Есть хак: если изменить тип ключа в реестре с REG_SZ (строка) на REG_EXPAND_SZ (расширяемая строка), то внезапно лимит на длину увеличивается. Теоретически могут возникнуть глюки, если путь содержит знак процента, но обычно таких путей не создают.

            Менять нужно и в HKLM, и в HKCU.
            Ответить
            • Зачем они тогда вообще реализовали заведомо более ограниченный тип "REG_SZ", если есть "REG_EXPAND_SZ"? Напоминает историю с "int" и "tinyint".
              Ответить
              • Там всё очень сложно. Сам себе лимит размера строки REG_SZ неплохой, но из-за глюков в кишках Windows при использовании такого ключа для PATH лимит получается маленьким. А если использовать REG_EXPAND_SZ, то обработка происходит через другие функции, не подверженные этому глюку, и лимит выходит нормальным.

                Разница между ними в том, что REG_SZ — это сырая строка, а REG_EXPAND_SZ — это шаблон, в котором подстроки вида %имя% при интерпретации заменяются на значение переменной окружения «имя».

                Проблема очень старая. Какой-то кусок кода со времён NT4 чудом дожил до Windows 10 без изменений. Только в новых выпусках десятки его начали ковырять, и я не знаю, всё ли исправили.
                Ответить
      • set URL=https://foo.bar/baz.zip
        set PATH=c:\temp\baz.zip
        
        wget.exe -O "%PATH%" "%URL%"
        Ответить
    • Ураааа! Гость вернулся!
      Ответить
    • http://www.engrish.com/wp-content/uploads//2021/07/error.jpg
      Ответить
    • Кобе
      Ответить

    Добавить комментарий