2015-06-02 61 views
0

我是一個unix新手,並探索shebang行的功能。爲什麼我們需要在使用shebang時使文件可執行?

例如,假設我有一個程序program.py來執行。

一種執行方式是直接調用解釋器命令:

python program.py 

如果使用shebang行,我將包括:

#!/usr/bin/env python 

在文件的開頭,告訴系統什麼口譯員使用。

那麼爲什麼我們在這種情況下,需要通過調用來使文件 '可執行文件':

chmod +x program.py 

,然後調用:

./program.py 

來執行它,

代替直接電話:

program.py 

來執行它?

+0

'chmod + x program.py'的原因是安全性。如果我們已經採取額外步驟來設置可執行位,操作系統將只會直接執行一個文件。 – John1024

回答

2

你在問兩個無關的問題。

我們使其可執行,以便操作系統讀取shebang行。

我們在前綴「./」,以便shell可以找到它並告訴操作系統執行它,因爲該腳本不太可能位於$PATH中列出的目錄中。

+0

沒有'./',是不是會在當前目錄下調用program.py? – user2517984

+0

對不起,我想我的意思是在第一種情況下我們基本上調用兩個步驟:1. Chmod + x program.py; 2. ./program.py,在第二種情況下,我們輸入'program.py'並直接回車,而不用調用chmod。 – user2517984

+0

只有'$ PATH'中列出的目錄中的可執行文件纔可以執行而不指定其目錄。但他們需要可執行無論。 –

相關問題