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

0

  1. 1
  2. 2
  3. 3
#!/bin/sh

[ ${SHELL} = "/bin/bash" ] || exit "Bash required!"

Запостил: Stallman Stallman, (Updated )

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

  • БАШИЗМ НЕ ПРОЙДЕТ!
    БАШИЗМ НЕ ПРОЙДЕТ!
    БАШИЗМ НЕ ПРОЙДЕТ!

    Заебал этот ГНУшно-линуксовый шовинизм, если честно. Пишите код так, что бы он на любом позиксовом sh работал
    Ответить
      • смотря где

        я действительно бывает использую gnu make и gcc, но стараюсь по максимуму писать платформонезависимо

        но конечно не всигда получается
        Ответить
  • Не, серьезно, а в чем багор??? Что не на баше это может и не исполниться?
    Ответить
      • А как надо? Если, допустим, я не хочу поддерживать совместимость со всем-всем, но чтобы на других системах оно всё-таки разумно падало, а не вылетало с непонятными ошибками?
        Ответить
        • ну тогда ты всесделал правильно

          а что из баш-спесифик ты использовал?
          Ответить
            • Пиши максимаально кросс-платформенно.
              Используй башизмы только если необходимо.

              И если уж используешь, то конечно проверяй (как ты и сделал)

              ну либо забубень баш в шебанг
              #!/bin/bash

              Кстати, если в коде есть бошизм, то в шебанг точно нужно указать баш, потому что на прыще могут быть обычный sh и рядом bash, так что лучше явно попросить баш
              Ответить
                    • Тогда пиши на С, и собирай CMakeом

                      Он тебе сгенерит cproj, и ты соберешь его VC
                      Он же сгенерит тебе Makefile, и ты соберешь его gcc

                      У тебя будут два нативных бинаря под Linux и windows, и всё будет заебись

                      Я мог бы еще посоветовать всякие mingw, но ты заранее предупредил, что ты не пидор.

                      Учти, что ничего сложнее лабы ты всё равно в рамках чистого ANSI C не напишешь, а значит придется дергать API операционок, а делать кондишенал компилешен.

                      Либо можно взять С++, там чуть больше всего в стандартной либе
                      Ответить
                      • Пидорство — писать под JVM и под CLR. А mingw — очень тонкая прослойка, её почти не видно.
                        Ответить
                        • Ничего себе тонкая

                          Разве там не эмулят позиксовый апи поверх виндового?

                          то есть у тебя конечно PE получается (в отличие от цигвина) но в том PE у тебя код-то все равно под юникс, или я путаю?
                          Ответить
                          • Есть несколько вариантов толщины:
                            1. Cygwin — самый толстый. Мумулирует почти всё.

                            2. MSYS — почти как Cygwin, но полегче. Не стали мумулировать то, что заняло бы много ресурсов.

                            3. Голый mingw без MSYS — по толщине сопоставим с CRT MSVC или Борманда. Т. е. для лаб годится. Но Мац умудрился под него Руби скомпилировать, не прибегая к MSYS и тем более к Cygwin.

                            В общем, смотреть нужно, что именно из позиксового API поддерживается каждым рантаймом.
                            Ответить
                            • Так MRI под винду небось и работает как говно, не?

                              Просто невозможно написать высокоперформансый код в ОСЬ-АГНОСТИК стиле


                              Навязжий в зубах уже пример это async io
                              * kqueue на бзд
                              * epoll на Linux
                              * CompletionPorts на Windows

                              С сипайтоне они это сделали, nodejs сделал это на libuv и пр.

                              А еще многотредовать, а еще всякие API для работы с дисковым IO...
                              Ответить
                              • > Просто невозможно написать высокоперформансый код в ОСЬ-АГНОСТИК стиле

                                ХЕРНЯ.
                                Если твой код делает некоторую числодробительную хуйню, например у тебя библиотека, которая перемножает матрицы, ей на ОС примерно насрать. Для многопоточности есть кроссплатформенный OpenMP.

                                А всякое там IO тебя вообще не ебет т.к.
                                1. Это уже не проблема твоей библиотеки
                                2. Это не боттлнек
                                Ответить
                          • В цигвине тоже PE, но он тянет за собой многомегабайтную cygwin1.dll.
                            Ответить
                          • printf — это позиксовый интерфейс, так? Но при этом он есть в стандартной библиотеке любого сишного компилятора.

                            А вот если захочешь форкать или симлинкать, то тебе нужен рантайм потолще.
                            Ответить
                            • ну блин, очевидно я говорил о том, что есть только в позиксе, а не в стандартной библиотеке няшной

                              Например про write, про питреды, про форк, и прочее isatty
                              Ответить
                              • Ты помнишь, мы обсуждали, что порт гита на Windows не умеет работать с симлинками?

                                Голый mingw их не поддерживает, нужно дёргать API ОС. Авторам гита не понравилось, что операционки до Висты не поддерживают новые симлинки, они поддерживают только directory junctions, а совсем старые операционки и junctions не поддерживают.

                                MSYS поддерживает симлинки, но не виндовые, а... собственную мумуляцию. Он создаёт маленький файл с сигнатурой вроде <!symlink>, в котором лежит ссылка на оригинал. Естественно, программы, которые собраны не с MSYS, а с другим рантаймом, воспринимают такие костыли не как симлинк, а как мусор. Этот вариант тоже не понравился авторам гита, хотя они и использовали MSYS при портировании на Винду.
                                Ответить
                                • с симлинками на пинде беда

                                  Там есть джанкшены (но только для папок) и есть симлинки на основе репрс поинтс но не работает без юак
                                  Ответить
                • Ищи вирус «Winux».

                  Ещё бывают скрипты-полиглоты, которые могут выполняться несколькими интерпретаторами.
                  Ответить

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

Из-за тебя ушел bormand, guest!

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


    8