У меня есть вопрос по поводу фразы «#!', который появляется вверху каждого файла python, большинства файлов bash и нескольких других.

Я уже выполнил поиск по этому слову в Google и на этом сайте. Google просто отсылает меня к документации bash, а Super User дает мне ровно 0 результатов поиска.

Итак, вот мои вопросы:

  • Есть ли смысл в фразе '#!'в какой-либо части интерпретируемого исполняемого файла, кроме верхней строки, которая показывает основной интерпретатор для использования?

  • Если да, то может ли он использоваться для переключения интерпретаторов в одной оболочке или для чего-то другого?

  • Существуют ли другие типы команд, которые могут быть отправлены в интерпретирующую оболочку, как эта?

2 ответа2

1

"Hashbang", как известно, полезен только тогда, когда он появляется в начале файла. Когда файл выполняется из оболочки * nix, которая начинается с этих двух байтов, вызывается следующий путь, чтобы интерпретировать оставшуюся часть файла. Это позволяет интерпретировать интерпретируемые сценарии на том же уровне, что и скомпилированные двоичные исполняемые файлы.

Оболочка передает весь файл интерпретатору, и поэтому другой причиной для начала с # является то, что интерпретатор интерпретирует первую строку как комментарий.

Ответы на другие ваши вопросы оба - нет - вы не можете переключать переводчиков на полпути через файл (если вы не отправите другую инструкцию первому переводчику, который делает это), и нет других встроенных "команд", которые можно интерпретировать оболочкой при попытке выполнить текстовый файл.

0

Это называется шебанг. Интерпретаторы игнорируют его, поскольку строка начинается с «#», и это означает, что это комментарий, но для системы он говорит, что делать с этим кодом при выполнении. Путь после '#!'это путь к интерпретатору, и если вы запустите код, он откроет файл с интерпретатором, который вы указали в шебанге.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .