Подтвердить что ты не робот

Назначение #!/Usr/bin/python3

Я заметил это на нескольких языках сценариев, но в этом примере я использую python. Во многих учебниках они начинаются с #!/usr/bin/python3 в первой строке. Я не понимаю, почему у нас это есть.

  • Если операционная система не знает, что это python script (очевидно, он установлен, так как вы ссылаетесь на него)
  • Что делать, если пользователь использует операционную систему, не основанную на UNIX.
  • Язык по какой-либо причине устанавливается в другой папке
  • Пользователь имеет другую версию. Особенно, если это не полный номер версии (например, Python3 vs Python32)

Во всяком случае, я видел, как это нарушает python script из-за перечисленных выше причин.

4b9b3361

Ответ 1

#!/usr/bin/python3 - это строка #!/usr/bin/python3.

Линия Шебанга определяет, где находится переводчик. В этом случае интерпретатор python3 находится в /usr/bin/python3. Строка shebang также может быть интерпретатором bash, ruby, perl или любого другого языка сценариев, например: #!/bin/bash.

Без строки shebang операционная система не знает, что это скрипт на python, даже если вы установите флаг выполнения для скрипта и запустите его как ./script.py. Чтобы скрипт по умолчанию выполнялся в python3, либо вызовите его как python3 script.py либо установите строку shebang.

Вы можете использовать #!/usr/bin/env python3 для переносимости между различными системами, если у них установлен интерпретатор языка в разных местах.

Ответ 2

Это называется хэш-бэгом. Если вы запустите script из оболочки, он проверит первую строку, чтобы выяснить, какую программу следует запустить для интерпретации script.

Операционная система, не основанная на Unix, будет использовать свои собственные правила для определения способа запуска script. Windows, например, будет использовать расширение имени файла, а # приведет к тому, что первая строка будет обработана как комментарий.

Если путь к исполняемому файлу Python неверен, то, естественно, script завершится с ошибкой. Легко создавать ссылки на фактический исполняемый файл из любого места, указанного стандартным соглашением.

Ответ 3

Эта строка помогает найти исполняемый файл программы, который будет запускать script. Это обозначение shebang довольно стандартно для большинства языков сценариев (по крайней мере, используется в взрослой операционной системе).

Важным аспектом этой строки является указание, какой интерпретатор будет использоваться. Например, во многих дистрибутивах, ориентированных на развитие, Linux обычно имеет несколько версий python, установленных одновременно.

Python 2.x и Python 3 не совместимы на 100%, поэтому это различие может быть очень важным. Таким образом, #! /usr/bin/python и #! /usr/bin/python3 не совпадают (и ни одна из них не такая же, как #! /usr/bin/env python3, как указано в других разделах этой страницы.

Ответ 4

  • И эта строка как.

  • Он игнорируется.

  • Он не будет запущен и должен быть изменен, чтобы указать на правильное местоположение. Или env.

  • Это не сработает и, вероятно, не будет работать под другой версией независимо.

Ответ 5

Чтобы выяснить, как работает строка shebang для окон, из документа 3.7 Python:

  • Если первая строка файла сценария начинается С# !, то она называется строкой "Шебанг". Linux и другие Unix-подобные операционные системы имеют встроенную поддержку таких строк, и они обычно используются в таких системах для указания того, как должен выполняться скрипт.
  • Python Launcher для Windows позволяет использовать те же возможности со скриптами Python в Windows
  • Чтобы разрешить перенос строк в сценариях Python между Unix и Windows, программа запуска поддерживает несколько "виртуальных команд" для указания, какой интерпретатор использовать. Поддерживаемые виртуальные команды:
    • /usr/bin/env python
      • Форма /usr/bin/env линии shebang имеет еще одно специальное свойство. Прежде чем искать установленные интерпретаторы Python, эта форма будет искать в исполняемом PATH исполняемый файл Python. Это соответствует поведению программы enix Unix, которая выполняет поиск по PATH.
    • /USR/бен/питон
    • /USR/локальные/бен/питон
    • питон

Ответ 6

На самом деле определение того, какой тип файла является файлом, очень сложно, поэтому теперь операционная система не может просто знать. Это может сделать много догадок на основе -

  • расширение
  • ИМП
  • MIME

Но командная строка не беспокоится обо всем этом, потому что она работает на ограниченном, обратно совместимом уровне, с тех пор, как эта причудливая ерунда ничего не значила. Если вы дважды щелкнете по нему точно, современная ОС может рассчитать это out-, но если вы запустите его из терминала, то нет, потому что терминал не заботится о ваших модных API-интерфейсах для типизации файлов вашей конкретной ОС.

Что касается других пунктов. Это удобство, так же возможно запустить

python3 path/to/your/script

Если ваш питон не указан по указанному пути, он не будет работать, но мы склонны устанавливать такие вещи, чтобы эти вещи работали, а не наоборот. На самом деле не имеет значения, находитесь ли вы под * nix, зависит ли ваша оболочка, рассматривать ли эту строку, потому что это шелл- shellcode. Так, например, вы можете запустить bash под Windows.

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