Должно быть реализовано execve()
. Все остальные функции в семействе exec
являются просто обертками (те, которые заканчиваются на p
, выполняют поиск $PATH
, чтобы найти исполняемый аргумент, а те, которые l
, строят массив argv
путем итерации по список аргументов переменной).
Он работает так же для интерпретатора любого языка - механизм на самом деле не заботится о том, что делает программа в строке shebang, он просто выполняет его с именем пути сценария в качестве аргумента. Вы даже можете сделать:
#!/bin/cat
для создания файла, который просто печатает сам себя при запуске.