Строка Sha-bang дает результат, отличный от вызова скрипта вручную

#python #shell

#python #оболочка

Вопрос:

У меня есть скрипт на Python script.py , который был определен как исполняемый и который начинается со следующего sha-bang:

 #!/usr/bin/env python -W all
  

Но когда я вызываю его из командной строки, это то, что я получаю:

 $ ./script.py 
/usr/bin/env: python -W all: No such file or directory
  

Вызов его напрямую работает, хотя:

 $ env python -W all script.py
... some good stuff happens here
  

Что я здесь делаю не так?

Ответ №1:

В строке shebang вы получаете только один аргумент. So python -W all передается env в качестве одного аргумента. В командной строке оболочка корректно анализирует аргументы перед вызовом env .