Что точно интерпретирует #!/bin/bash строка?

Много сценариев на различных языках имеют a #!/bin/bash заголовок с путем к интерпретатору, таким образом, они могут быть выполнены без явного вызова к интерпретатору из командной строки.

Но то, что точно читает эту строку и выполняет интерпретатор, является этим оболочка или ядро?

6
задан 09.03.2010, 04:30

2 ответа

По крайней мере, в Linux, ядро имеет эту функциональность: fs/binfmt_script.c конкретно.

http://www.netmite.com/android/mydroid/cupcake/kernel/fs/binfmt_script.c

Я предполагаю, однако, что некоторые оболочки могут обойти это, и проверять первую строку на строку интерпретатора вместо того, чтобы просто вызвать должностное лицо и позволить ядру понять это.

7
ответ дан 07.12.2019, 15:40

Ядро читает его. Это использует #! обнаружить, что файл является сценарием и не двоичным файлом и должностными лицами команда, которая следует.

http://en.wikipedia.org/wiki/Shebang_ (Unix), который объясняет #As_magic_number, как он работает вполне прилично.

5
ответ дан 07.12.2019, 15:40

Теги

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