Емельянов Эдуард Владимирович (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

  • Чем бы таким заменить STM32F072C8T6?

    Полез сейчас на али цены посмотреть, а там… В среднем уже по 600-700 рублей за штучку просят! Вообще охамели. И это - гарантированно БУшные ведь!.. А…

  • Понаблюдал, блин!

    Опять у нас что-то с сетью поломали. Хотел было протестировать, как наша подвесная часть оптоволоконного спектрографа работает, а из дома связь с…

  • Липовые STM32F303CBT6

    Купили недавно на али на работу десяток вышеупомянутых МК (причем, недешево: около 600р за штучку при красной цене в 200р!). И вот, сижу, на своей…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 5 comments