Beri bash i ebash / Говнокод #27769 Ссылка на оригинал

0

  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 ISO, (Updated )

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

  • Поясните не линуксоиду, что тут не так.
    Ответить
    • Переменная 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%"
      Ответить
  • Ураааа! Гость вернулся!
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8