5
A
回答
7
因爲你正在運行的是python script.py
是python程序;然後,它加載並運行您在參數中指定的腳本,即script.py
(基本上是一個文本文件)。腳本文件不需要是可執行文件,因爲這裏執行的是python解釋器(python二進制文件本身,顯然應該具有x
權限)。
隨着.\script.py
,你嘗試直接運行你的腳本(仍然是一樣的文本文件)作爲一個程序。當你這樣做時,你希望它用你在腳本代碼的第一行中指定的解釋器來解析,「shebang」例如#!/usr/bin/env python
。如果未設置x
權限,則操作系統不會嘗試「執行」您的文件(儘管它可能會嘗試使用默認程序在適用的情況下打開它),因此,它不會關心shebang。
4
文件本身它解釋(讀)而不是在第一個例子中實際執行。 python應用程序是需要執行權限的。
在第二個示例中,文件本身正在執行,因此需要這些權限才能繼續。
2
當我們運行一個腳本python script.py
我們實際調用Python解釋器,其大致位於/usr/bin/python
(的which python
輸出會告訴你確切位置)。
解釋器依次讀取腳本並執行其代碼。 有執行許可的翻譯器是。
當以腳本形式執行./script.py
時,腳本將直接執行,因此腳本需要執行權限。所使用的解釋器由shebang行指定。
當內核發現前兩個字節是#!
時,它會使用該行的其餘部分作爲解釋器並將該文件作爲參數傳遞。請注意,爲此,該文件需要具有執行權限。在前一種情況下,我們間接地做什麼內核會做了,我們執行的腳本./script.py
總之通過方法1執行解釋需要只讀權限,但對於後來它需要執行它直接
相關問題
- 1. 爲什麼PHP需要「執行」權限才能寫入文件?
- 2. 爲了運行,VC++可執行文件需要什麼?
- 3. 爲什麼Apache + PHP需要執行權限才能寫入文件?
- 4. 爲什麼我需要root權限才能運行GDB?
- 5. XPI需要什麼文件權限?
- 6. MongoDB - 運行setFeatureCompatibilityVersion需要什麼特權?
- 7. 用戶需要什麼權限才能執行RetrieveAttributeRequest?
- 8. 爲什麼你不需要在類路徑中的jar中執行權限
- 9. 權限需要授予執行
- 10. 需要什麼權限才能運行regsvr32/s/c「myocx.ocx」
- 11. 在構建階段「運行腳本」需要什麼權限?
- 12. 需要什麼權限才能運行Magento?
- 13. 需要什麼權限才能運行Hive Cli
- 14. 爲什麼在以不同方式運行腳本時需要權限?
- 15. 運行或計劃批次Apex需要什麼權限(配置文件)?
- 16. 爲什麼Windows要求用系統管理員權限運行名爲「install」的可執行文件?
- 17. CIMSessions需要什麼權限
- 18. subprocess.Popen需要什麼權限?
- 19. 什麼是運行可執行jar文件的最小unix權限?
- 20. 爲什麼`sched_setscheduler()`需要root權限?
- 21. 爲什麼需要管理員權限?
- 22. 爲什麼需要「引用」權限?
- 23. 爲什麼我需要權限「android.permission.WRITE_OWNER_DATA」
- 24. 爲什麼start-stop-daemon需要權限?
- 25. 在MarkLogic中執行函數需要什麼權限?需要用於執行marklogic功能
- 26. PHP權限錯誤 - 我需要執行權限?
- 27. 爲什麼我的程序要求在Vista上運行權限?
- 28. 爲什麼visual studio 2008運行時需要管理員權限,而2005和2010則不需要?
- 29. 爲什麼im4java Java API需要本機可執行文件?
- 30. 爲什麼rails需要JavaScript運行時?
要了解更多關於這是如何工作的,尋找unix shebangs https://en.wikipedia.org/wiki/Shebang_%28Unix%29 – xvan