Sh :shebang OpenBSD не используется

Ядро ЯВЛЯЕТСЯ программой, как и любая другая. По умолчанию ядро ​​​​Linux пытается получить доступ к файловой системе, однако это поведение может быть тривиально устранено модификацией ядра (, на самом деле просто добавлением функции «arch _call _rest _init ()» ). Для выполнения «полезной работы» мы ожидаем, что разработчик может включить потоки ядра (kthreads ), возможно, в пользовательский драйвер,для выполнения некоторой желаемой рабочей нагрузки по инициализации и типу приложения. Ядро Linux уже содержит множество k-потоков, но в основном для выполнения вспомогательной работы по отношению к ядру или драйверам. API-интерфейсы, доступные в контексте ядра, сильно отличаются от доступных в пользовательском -пространстве Linux. Большая часть функциональных возможностей системных вызовов стала бы бесполезной в сценарии без файловой системы -.

Да, Linux по умолчанию требует доступа к файловым системам. Нет, модифицированное ядро, безусловно, может выполнять полезную работу без какой-либо файловой системы. Практическое использование Linux без файловой системы, по IMO, довольно ограничено, но не равно нулю. FWIW, в прошлом многие ядра -реального времени были встроены в то же -пространство имен и двоичные файлы, что и приложения RT.

3
03.09.2021, 22:07
1 ответ

OpenBSD не поддерживает интерпретаторы, которые сами по себе являются скриптами в shebangs. Интерпретаторы должны быть настоящими двоичными файлами.

Попытка выполнить ваш scriptзавершается ошибкой с ENOEXEC, и оболочка возвращается к запуску /bin/shсо сценарием в качестве первого аргумента, как описано в документации.

Вы можете проверить это, попробовав запустить свой скрипт напрямую через execve(2), а не через оболочку, Perl exec, xargs(1), env(1), execvp(3)или какую-либо другую оболочку, которая эмулирует поведение оболочки.

Если это не задокументировано, вы можете просто посмотреть исходный код .

В любом случае, OpenBSD похожа на большинство других систем, кроме Linux; Насколько мне известно, только Linux поддерживает другие скрипты в качестве интерпретаторов, вплоть до 4 уровней, после чего execveзавершится ошибкой с ELOOP.

6
03.09.2021, 23:09

Теги

Похожие вопросы