2012-06-16 79 views
4

我是新来的Ubuntu ...我想经营我的第一个简单的Python程序“Hello World”的... 在终端bash的权限被拒绝了蟒蛇

1. chmod +x filename.py 
2. ./filename.py 

终端中运行以下命令后显示以下错误“bash: ./filename.py: Permission denied” 有什么可以解决的问题?

+2

你可以做'ls -l filename.py'并发布它说的内容..我对文件许可感到好奇(尽管'chmod + x filename.py'是使文件可执行的正确方法)。 – Levon

+0

你在脚本的第一行是否有'#!/ usr/bin/env python'? –

+0

Re'#!/ usr/bin/env python' vs'#!/ usr/bin/python'我被一些人强烈诫勉称赞使用前者(我自己的所有脚本仍然这样做),因为可能你不能确定哪个Python会执行以防万一你安装了多个脚本,所以这个想法总是为你想要的那个指定完整的路径)。也许我应该提出这个问题并将其张贴在SO上。 – Levon

回答

5

在python文件的顶部是否有适当的咒语?例如,

#!/usr/bin/python(或备选地#!/usr/bin/env python

只是为了澄清,chmod +x仅使一个文件的可执行文件,它不运行它。

而且我假设你的脚本看起来像什么比这更复杂:

#!/usr/bin/env python 
print 'hello world' 
+1

OP询问一个Python脚本,所以shebang应该是:'#!/ usr/bin/env python'。而且OP确实表示正是这种运行方式才是错误。 – lvc

+0

@ivc你是对的..我会更新我的答案 - 谢谢你的发现。 – Levon

+0

真的非常感谢每一个.. @Levon感谢编辑我的问题 +#!/ usr/bin/python + print“Hello,World!” 以上是我的程序。 – Ammu

5

一些可能性:

  1. 它说什么,如果你键入umaskchmod +x只会为您创建一个可执行文件,如果您的umask不会阻止用户可执行位。一个典型的umask如0022不会阻止用户的执行位,但像0122这样的umask可以。 (更多信息见chmod(1)描述部分。)

  2. 执行脚本如Python脚本,你还需要阅读权限。尝试chmod u+rx filename.py并再次执行该脚本。

  3. 无论您在文件中使用“hashbang”行在文件中指定的任何解释器(例如#!/usr/bin/env python)是不可执行的,尽管根据我的经验,这会产生不同的错误消息。

+0

嗨Zigg, 1.谢谢你的回答 2.Now Its工作,但是chmod -x和chmod u + rx背后的问题是什么? – Ammu

+0

'chmod -x'将删除用户,组和其他用户的执行权限,但只有当umask不包含那些执行位时才可以执行 - 请参阅http://linux.die.net/man/上的chmod手册页。 1/chmod获取更多信息。无论umask如何,chmod u + rx'都会设置用户读取和执行位。 – zigg

3

我在我的新系统上处理同样的问题。

这是我第三次尝试解决这个问题,你的文章是第一个出现在谷歌搜索结果中的文章。我的帖子很晚,但认为它会帮助其他用户遇到同样的问题。

在我的情况下,它是关于分区表设置。

检查你的/ etc/mtab文件是如何存储python脚本的。检查是否有一个条款:NOEXEC

NOEXEC是禁止分区下执行的标志。默认情况下,它是用exec设置的。但是,有时候,这种事情会发生。

现在,它在这里工作得很好。