Skip to main content
 首页 » 编程设计

python之#!/usr/bin/python(sha-bang 或 she-bang)在 bash 中不起作用

2025年05月04日10zengkefu

我在文件中有以下内容

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。