2014-01-20 151 views
1

我是linux新手,有完整的noob問題。我已經使用chmod + x來執行我的python腳本,現在我可以使用./前綴(./script_name)從終端運行它。我的問題是這個前綴究竟意味着什麼,爲什麼需要運行可執行文件。在linux中運行可執行文件

謝謝

回答

2

這意味着當前目錄和腳本是在當前目錄

+2

請停止投票給我!這是一個微不足道的問題,答案是微不足道的 –

1

操作系統搜索您使用裸可執行文件名(foo VS ./foo)時$PATH。在你的情況下,文件可能不在路徑上,所以你需要告訴操作系統到底在哪裏。您可以通過指定可執行文件的路徑來完成此操作。這就是我所說的./:在我當前的工作目錄中查找可執行文件。它被稱爲「相對路徑」,當你想引用的東西接近你當前的工作目錄時,它們非常方便。

+0

如果它被添加到$ PATH中,./將不需要? – user3214667

+0

這是正確的。 – jszakmeister

3

像其他任何程序一樣,shell也是一個等待輸入的程序。現在,當你在command1 arg1 arg2 ...類型,外殼做的第一件事就是嘗試從其中找出command1如下:

  1. 功能(嘗試typeset -f中的Bash shell)
  2. 一個內置的命令(如type
  3. 一個shell別名(嘗試alias中的Bash shell)
  4. 可以執行

現在闕文件有關最後一點的文件可以執行。 UNIX內核將需要系統調用的系統調用中的可執行文件的絕對路徑(請參閱man exec)。

要獲取文件的絕對路徑,shell首先在$ PATH變量中指定的目錄中查找該命令。

因此,如果你指定相對路徑如../abc/command1./command1那麼bash將能夠找到該文件並將其傳遞給exec()系統調用。

如果以上4個步驟無法找到輸入到外殼command1,您將獲得:

​​

但是,如果該文件的絕對路徑解決,但它是不可執行的你:

$ command1 
bash: ./command1: Permission denied 

參考文獻:

+0

謝謝您的回答和參考,我會讀它。 – user3214667

相關問題