我在文件中有以下内容
demo.py:-//可执行位设置
#!/usr/bin/python
import os
我在终端中使用了命令 bash demo.py 并期望 第一行由 bash 解释,它将文件处理到 python 解释器。 但它调用二进制“/usr/bin/import”(使用 strace 计算)。 sh demo.py 也是如此。 但是运行 ./demo.py 是可行的。 man bash 说
"如果程序是以#!开头的文件,则第一个的剩余部分 行指定程序的解释器。”
这并没有发生。
使用 bash 版本
$ bash --version
GNU bash,版本 4.2.8(1)-release (i686-pc-linux-gnu) 版权所有 (C) 2011 Free Software Foundation, Inc. 许可 GPLv3+:GNU GPL 版本 3 或更高版本 http://gnu.org/licenses/gpl.html
这是免费软件;您可以自由更改和重新分发它。 在法律允许的范围内,不提供任何保证。
在 Ubuntu 11.04 中
请您参考如下方法:
bash 文档是正确的:当您在 bash 命令提示符下输入 ./demo.py 时,bash 使用 shebang 行来确定哪个可执行文件将运行该脚本。
当您执行 bash demo.py 时,bash 当然会尝试将其作为 bash 脚本运行。因为你告诉它。 (想象一下,如果您有一个带有不正确 shebang 行的 bash 脚本——您将如何运行它?以这种方式将它直接传递给 bash。)
如果您想启动另一个运行 Python 脚本的 bash shell,请使用 bash -c ./demo.py 执行 demo.py bash 命令 而不是 bash 脚本。但是您不需要为了运行 Python 脚本而启动另一个 shell。
