Спокойно! Завтра устроим выходной по постам, на сегодня это последнее чтиво, обещаю. Внезапная интеграция вылезла, нужно перекрывать. Давай на сон грядущий поговорим про интерпретатор.
Все что работает на базе ядра linux, создание процесса происходит в два этапа. Процесс клонируется с помощью системных вызовов fork и clone. А копия процесса замещается кодом из указанного файла (exec). Детали пока опущу, речь про другое.
Ты всяко знаешь, что скрипт должен начинаться с символов #!. Эта штуковина называется SheBang.
Если дословно: SheBang = Она взрывает. Bang Bang, Feuer Frei! Как у Rammstein песенка, сразу фильм XXX на ум приходит. С лысым ЧСВ мужиком, а не про выгоревших чуваков позади дивана с одной миниатюрной мадмуазелью с дрочильного сайта.
В общем после #! нужно указать путь до интерпретатора, обычно мы с вами фигачим /bin/bash или питончик какой нибудь.
Данная конструкция будет использована системными вызовами семейства exec для запуска нужного интерпретатора, который в свою очередь исполнит картину маслом и запустит скрипт.
Если из командной строки запустить скрипт и системный вызов execve возвратит ошибку ENOEXEC
Процесс оболочки bash будет сам пытаться выполнить скрипт.
EXECVE() = выполняет программу, заданную параметром filename. Программа должна быть или двоичным исполняемым файлом, или скриптом, начинающимся со строки вида #!.
ENOEXEC = исполняемый файл в неизвестном формате, для другой архитектуры, или же встречены какие-то ошибки, препятствующие его выполнению.
В большинстве случаев ENOEXEC возвращается если первая строка не начинается с #! либо первая строка начинается с #! и в строке больше нет символов кроме пробелов и табуляций.
Так вот, это запустится:
Если интересно поподробнее про это почитать, есть клевый мануал про всю эту суету с «ОнаВзрывает» или SheBang. Правда на английском, но с переводчиком вменяемо.
Исследуйте господа и дамы.
Всем котиков и доброй ночи🚶♀️ 😎 ☠️ пойдука я дрыхнуть! А завтра наконец-то пятница и нет никаких ретроспектив и созвонов. Ура!
tags: #linux #bash
—
💩 @bashdays
Все что работает на базе ядра linux, создание процесса происходит в два этапа. Процесс клонируется с помощью системных вызовов fork и clone. А копия процесса замещается кодом из указанного файла (exec). Детали пока опущу, речь про другое.
Ты всяко знаешь, что скрипт должен начинаться с символов #!. Эта штуковина называется SheBang.
Если дословно: SheBang = Она взрывает. Bang Bang, Feuer Frei! Как у Rammstein песенка, сразу фильм XXX на ум приходит. С лысым ЧСВ мужиком, а не про выгоревших чуваков позади дивана с одной миниатюрной мадмуазелью с дрочильного сайта.
В общем после #! нужно указать путь до интерпретатора, обычно мы с вами фигачим /bin/bash или питончик какой нибудь.
Данная конструкция будет использована системными вызовами семейства exec для запуска нужного интерпретатора, который в свою очередь исполнит картину маслом и запустит скрипт.
Если из командной строки запустить скрипт и системный вызов execve возвратит ошибку ENOEXEC
Процесс оболочки bash будет сам пытаться выполнить скрипт.
EXECVE() = выполняет программу, заданную параметром filename. Программа должна быть или двоичным исполняемым файлом, или скриптом, начинающимся со строки вида #!.
ENOEXEC = исполняемый файл в неизвестном формате, для другой архитектуры, или же встречены какие-то ошибки, препятствующие его выполнению.
В большинстве случаев ENOEXEC возвращается если первая строка не начинается с #! либо первая строка начинается с #! и в строке больше нет символов кроме пробелов и табуляций.
Так вот, это запустится:
#!И это тоже запустится:
echo 'Have a nice bashdays'
exit
# super commentНу и это аналогично залетит в сакцесфул:
echo 'Have a nice bashdays'
exit
echo 'Have a nice bashdays'Так что не обязательно указывать нашу любимую конструкцию #!/bin/bash, интерпретатор тот еще жук и учитывает такие нюансы.
exit
Если интересно поподробнее про это почитать, есть клевый мануал про всю эту суету с «ОнаВзрывает» или SheBang. Правда на английском, но с переводчиком вменяемо.
Исследуйте господа и дамы.
Всем котиков и доброй ночи
tags: #linux #bash
—