На самом деле определение типа файла является очень сложным, поэтому теперь операционная система не может просто знать. Он может сделать много догадок на основе -
Но командная строка не беспокоится обо всем этом, потому что она работает на ограниченном обратно совместимом слое, с тех пор, как эта причудливая ерунда ничего не значила. Если вы дважды щелкните по нему точно, современная ОС сможет это понять, но если вы запустите его из терминала, то нет, потому что терминал не заботится о ваших модных API-интерфейсах для ввода файлов, характерных для вашей ОС.
Относительно других пунктов. Это удобно, так же возможно запустить
python3 path/to/your/script
Если ваш питон находится не по указанному пути, он не будет работать, но мы склонны устанавливать такие вещи, чтобы эта штука работала, а не наоборот. На самом деле не имеет значения, если вы находитесь под * nix, ваша оболочка должна учитывать эту строку, потому что это shellcode
. Так, например, вы можете запустить bash
под Windows.
Вы можете фактически пропустить эту строку полностью, это просто означает, что вызывающая сторона должна будет указать интерпретатора. Также не размещайте переводчиков в нестандартных местах, а затем пытайтесь вызывать сценарии без предоставления переводчика.