#!/ usr / bin / python(sha

我在文件中有以下内容

demo.py:- //可执行位设置

#!/usr/bin/python
import os

我在终端中使用了命令bash demo.py ,并期望第一行由bash解释,并且它将文件处理为python解释器。 但它调用二进制“/ usr / bin / import”(使用strace来计算)。 sh也是一样的demo.py。 然而运行./demo.py的作品。 男人bash说

“如果程序是以#!开头的文件,则第一行的其余部分指定程序的解释器。”

这没有发生。

使用bash版本

$ bash --version

GNU bash,版本4.2.8(1)-release(i686-pc-linux-gnu)版权所有(C)2011自由软件基金会,许可证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脚本。 但是你不需要启动另一个shell来运行一个Python脚本。


我认为你对她的声音系列的含义感到困惑。

#!/usr/bin/python

这意味着./demo.py将作为/usr/bin/python demo.py

但是,使用/bin/bash demo.pybash会尝试将demo.py解释为shell脚本文件,并且会失败,也就是说, python将不会执行。


您需要将其作为bash -c ./demo.pysh -c ./demo.py ,否则文件中的每一行都将作为bash命令执行(而不是使用she-bang执行该文件)。

链接地址: http://www.djcxy.com/p/19067.html

上一篇: #!/usr/bin/python (sha

下一篇: Install problems with Spreadsheet::ParseExcel