Шебанг (#!) Стандартизирован?

Это Шебанг #!например,

#!/bin/sh

перед исполняемыми файлами сценариев, официально стандартизированными в стандартной базе Linux или в любом из стандартов Open Group или где-либо еще? Если да, пожалуйста, предоставьте ссылки и детали.

ПРИМЕЧАНИЕ: меня больше всего интересует его значение для сценариев оболочки, а также для любого исполняемого файла. Другими словами, требует ли какой-либо из стандартов интерпретация #! в начале исполняемых файлов? Тем не менее, любые другие ссылки на него в стандартах также приветствуются.

2 ответа

Решение

POSIX оставляет эффект #! неопределенные. С 2.1 Shell Введение

Оболочка считывает свой ввод из файла (см. Sh), из опции -c или из функций system() и popen(), определенных в томе "Системные интерфейсы" POSIX.1-2008. Если первая строка файла команд оболочки начинается с символов "#!", Результаты не указываются.

Из источника:

Скрипты Bash часто начинаются с #! /bin/bash (при условии, что Bash был установлен в /bin), поскольку это гарантирует, что Bash будет использоваться для интерпретации сценария, даже если он выполняется под другой оболочкой.

Вы также можете проверить это #! магия, подробности о механизме shebang/hash-bang в различных вариантах Unix

Другие вопросы по тегам