Інформація про "#!" (shebang, hashbang, crunchbang тощо)


0

У мене питання щодо фрази "#!" що з’являється у верхній частині кожного файлу python, більшості файлів bash та кількох інших.

Я вже проводив пошук цього терміна в Google і на цьому веб-сайті. Google просто посилає мене на базову документацію, а Super User дає мені точно 0 результатів пошуку.

Отже, ось мої запитання:

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

  • Якщо так, то чи можна використовувати його для перемикання перекладачів, перебуваючи в одній оболонці, чи це використовується для чогось іншого?

  • Чи є інші команди команд, які можуть бути надіслані в інтерпретаційну оболонку, як ця?



1
Ми не є дискусійним форумом, тому давайте не "говорити" ні про що, це питання видається надто широким.
Рамхаунд

1
Сайрус, дякую за посилання! Рамхаунд, це не обговорення, це чесне богу питання, просто з дивно вираженою індукцією. Крім того, він не такий широкий, всього 3 дріжджі та ніс.
Містер Minty Fresh

@ user5249751 - Тож виберіть іншу назву. Навіть не описується запропоноване запитання, яке повинно бути одним питанням, а не декількома
Рамхаунд

На жаль, тут занадто багато некваліфікованих рецензентів: 1 2 . Чи може хтось, будь ласка, додати тег shebang ( #!)? Дякую.
Сайрус

Відповіді:


1

Як відомо, "хешбанг" корисний лише тоді, коли він з'являється на початку файлу. Коли файл виконується з оболонки * nix, яка починається з цих двох байтів, для інтерпретації залишку файлу викликається наступне ім'я шляху. Це дозволяє обробляти інтерпретовані сценарії на тому ж рівні, що і компільовані двійкові виконувані файли.

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

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


0

Це називається шебанг. Інтерпретатори ігнорують це, оскільки рядок починається з "#", і це означає, що це коментар, але для системи він повідомляє, що робити з цим кодом при виконанні. Шлях після символу "#!" це шлях інтерпретатора, і якщо ви запустите код, він відкриє файл з інтерпретатором, який ви дали в шебангу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.