Sha-bang行与手动调用脚本的结果不同

lin*_*lof 1 python shell

我有一个Python脚本script.py,已被定义为可执行文件,并从以下sha-bang开始:

#!/usr/bin/env python -W all
Run Code Online (Sandbox Code Playgroud)

但是当我从shell调用它时,这就是我得到的:

$ ./script.py 
/usr/bin/env: python -W all: No such file or directory
Run Code Online (Sandbox Code Playgroud)

直接调用它有效:

$ env python -W all script.py
... some good stuff happens here
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

edu*_*ffy 5

在shebang线上,你只能得到一个参数.因此python -W all被传递env为一个论点.在命令行上,shell在调用之前正确解析参数env.