Зачем скрипту python в текущем каталоге требуется ./ для выполнения с помощью shebang? - PullRequest
0 голосов
/ 18 ноября 2018

В моем текущем каталоге есть исполняемый файл script.py с символом #!/usr/bin/env python.Чтобы выполнить это в bash, мне нужно набрать ./script.py.Из того, что я читал о Шебанге, я ожидал, что script.py также выполнит скрипт, так же как и python script.py, но это не так.В чем разница между двумя последними вариантами?

1 Ответ

0 голосов
/ 18 ноября 2018

В Un * x-подобных системах . не находится в пути по соображениям безопасности, чтобы избежать выполнения команды типа ls, которая может находиться в пользовательском каталоге (это нарушение безопасности лучше всего использовать как root)

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

При вводе python myscript.py вы знаете , что скрипт находится в текущем каталоге, и python читает его отсюда, независимо от системного пути (он рассматривается как data , а не как исполняемый файл, настоящий исполняемый файл python)

...