2013-03-21 52 views
1

由用戶在http://www.unix.com/shell-programming-scripting/84684-getting-no-such-file-directory-while-executing-shell-script.html錯誤時啓動腳本:沒有這樣的文件或目錄在執行shell腳本

問題描述我剛剛遇到了同樣的問題:「我得到:沒有這樣的文件或目錄,而執行shell腳本,但我在相應的路徑中有相應的文件,它也有可執行權限。「

答案:」您是否使用/ directory/scriptname或./scriptname啓動腳本?

一旦我使用「./scriptname」啓動腳本,就可以工作。我在多臺服務器上啓動了這個腳本,並且在一些機器上我可以使用「scriptname」,而在其他機器上我需要使用「./scriptname」。爲什麼在某些機器上需要「./」,而在其他機器上卻不需要。在所有機器上,文件權限是相同的。

回答

2

如果當前目錄(.)是PATH,你可以運行一個腳本這兩種方式:

script.sh  # Shell will look for the script.sh in 
       # every directory listed in $PATH 

./script.sh  # Shell will invoke the script.sh located 
       # in the current directory. 

如果當前目錄不在PATH,你必須這樣運行:

./script.sh 

這是因爲shell將不知道在哪裏可以找到此腳本 - 它的父文件夾不在PATH中。用./調用它會告訴shell在哪裏找到它。

到當前目錄添加到PATH,發出以下命令:

$ export PATH=$PATH:. 

清單結腸delimeted,共同上面的意思是「新的路徑將是相同的,與加入的老路當前目錄(.)「。

編輯:注意@Cyrille評論 - 把.PATH可能不是一個好主意(出於安全原因)。

+1

把'.'放在'$ PATH'中也是不好的做法([安全原因](http://www.unix.com/unix-dummies-questions-answers/22806-why-bad-想法 - 插入 - 點path.html))。然而,你可以把你的腳本放在一個已定義的目錄中,並將這個目錄添加到你的'$ PATH'中 – Cyrille 2013-03-21 09:04:30

相關問題