Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Хитрый шебанг

Вот только сейчас узнал, что башу можно скормить не только классический шебанг, начинающийся с "#!", но и вообще без шебанга исполнять файлы! На SO подсказывают, что любой текст с исходником на С/С++ можно "сделать интерпретируемым" при помощи простой конструкции:
//usr/bin/gcc "$0" && exec ./a.out "$@"
#include <stdio.h>
int main(){
    printf("hello!\n");
    return 0;
}

Можно даже более сложные вещи делать при помощи #if0!
Здесь вся суть кроется в том, что баш начинает исполнять файл строка за строкой даже без стандартного шебанга #!/bin/sh. Если мы пишем //bin/ls, то лишний слэш игнорируется (попробуйте запустить //bin/ls в консоли). А gcc два слэша подряд рассматривает как комментарий!
Аналогично с #if0: и gcc, и баш рассматривают это как комментарий, но, в отличие от gcc, все, что идет дальше (до #endif) баш интерпретирует!
Занятно.
Tags: c, всячина
Subscribe

  • Хеши строковых команд для МК

    Долго я к этому шел, но, похоже, пора уже: однобуквенные команды сложно запоминать (особенно если команд толпа, и большая часть с этими буквами…

  • OBS studio

    В общем, надоумили меня попробовать трансляцию в youtube. Напрямую скринкасты он писать не умеет, но может забирать поток с промежуточного…

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 5 comments