Tal*_*Kit 1 python bash ubuntu
我在文件中有以下内容
demo.py:- //可执行位集
#!/usr/bin/python
import os
Run Code Online (Sandbox Code Playgroud)
我在终端中使用了命令bash demo.py并期望第一行由bash解释并且它将文件处理为python解释器.但它调用二进制文件"/ usr/bin/import"(使用strace计算).sh demo.py也是如此.但运行./demo.py有效.男子巴什说
"如果程序是以#!开头的文件,则第一行的其余部分指定程序的解释器."
这没有发生.
使用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文档是正确的:当你进入./demo.pybash命令提示符时,bash使用shebang行来确定将运行脚本的可执行文件.
当你这样做的bash demo.py时候,当然bash会尝试将它作为bash脚本运行.因为你说过了.(想象一下,如果你有一个不正确的shebang行的bash脚本 - 你将如何运行它?通过这种方式将它直接传递给bash.)
如果你想开始是运行在Python脚本另一个bash shell中,然后使用bash -c ./demo.py执行demo.py 的bash命令,而不是作为一个bash脚本.但是你不应该只是为了运行Python脚本而启动另一个shell.
我觉得你对她的意思很困惑.
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
这意味着./demo.py将执行为/usr/bin/python demo.py.
但是,使用/bin/bash demo.py,bash将尝试解释demo.py为shell脚本文件并将失败,即python不会执行.
| 归档时间: |
|
| 查看次数: |
4900 次 |
| 最近记录: |