2010-04-01 67 views
0

你好!執行bash文件時出現問題

我在學習結合.sh文件和PHP時遇到了一些問題。我創建了一個文件test.sh,並在該文件中調用一個名爲test.php的PHP文件。

如果我雙擊.sh文件然後它運行完美,但是當我嘗試從終端運行它時,我得到「命令未找到」。我在我的.sh文件的確切文件夾中,但它不會工作。這裏是我的test.sh:

#!/bin/bash 
LIB=${0/%cli/} 
exec php -q ${LIB}test.php one two three 
exit; 

當我雙擊test.sh文件,然後它返回argv數組像它suppost。但爲什麼我不能從終端運行它?

+0

你是如何執行shell腳本?你可能會在沒有預先設定路徑的情況下調用它(類似於./) – 2010-04-01 09:12:42

回答

6

使用./filename.sh

無論你是在同一個文件夾或沒有,沒有給./系統搜索路徑變量。 (/ bin /,/ usr/bin等)

1

是否啓用執行位?

chmod +x test.sh 
0

從終端啓動並通過雙擊啓動時,您的環境可能會有所不同。嘗試從終端執行which phpecho $PATH以查看交易內容。

編輯1
正如其他人指出,如果「未找到命令」你指的是shell腳本,而不是PHP,那麼你可能忘了加上「./」的腳本的名稱(前即./test.sh)。此外,不要忘記通過調用chmod a+x test.sh來使其可執行。原因是PATH沒有包含當前目錄(即「。」),因爲這樣做會帶來安全風險(例如,其中包含大量文件的文件夾,包括假的「ssh」,然後可能會攔截您的密碼或類似的)。

EDIT 2
另外,我不知道你,但${0/%cli/}是從我的終端內評估到-bash。你確定這就是你想要擴大到的嗎?也許你應該指定確切的文件名。

0

您的$ PATH變量可能不包含'。' - 因此shell可能無法找到要運行的命令。

正如其他人所說,SH ./file.sh將工作...

+1

PATH不應包含「。」,因爲這是安全風險。 – 2010-04-01 09:12:03

0

另一種選擇是與SH(或bash運行它,如果你的機器上的sh不是bash和腳本使用bashims )

sh filename.sh 
bash filename.sh 

這將工作文件是否爲可執行文件或在$ PATH