2012-06-16 108 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設置的。但是,有時候,這種事情會發生。

現在,它在這裏工作得很好。