.sh 檔案需要 `sh app.sh`,即使使用 `#!/bin/bash` 行

.sh 檔案需要 `sh app.sh`,即使使用 `#!/bin/bash` 行

我的印像是,如果我包括這一行

#!/bin/bash

在我的文件的開頭,它將被識別為一個 bash 腳本,我可以通過以下方式運行

file.sh

代替

sh file.sh

但就我而言,file.sh給類似test.shGives 的東西test.sh: command not found。這是為什麼?

更新

我注意到我需要使用./.但我認為它無論如何都會在當前目錄中找到?

./test.sh

答案1

首先,您需要確保該文件是可執行的:

chmod +x file.sh

然後要運行它,您需要將其放入 PATH 中,即作業系統在尋找要運行的檔案時搜尋的檔案目錄之一,您可以使用 找到它echo $PATH,否則您需要輸入:

./file.sh

而不僅僅是輸入file.sh

file.sh如果它在您的 PATH 中,您只需鍵入 即可,我建議這樣做。一個好地方就在~/bin.如果該資料夾不存在,請建立該資料夾,在 Ubuntu 下,當您登入時它會新增到您的路徑中。

答案2

您需要使用 ./file.sh 啟動它,因為目前目錄不在 PATH 中。

如果這還不夠,因為你錯過了 frabjous 建議的 ,你應該啟動以chmod a+xshebang 開頭的程式#!/bin/bash

bash file.sh

不是

sh file.sh

即使 sh 是 /bin/bash 的符號連結。

shell 檢查它是如何被調用的,並且可以被調用以sh在兼容模式下運行,因此它可能無法處理一些 bashisms,如果以bash file.sh.

這不是你的問題,但如果你不知道這些微妙的區別,可能會成為一個問題。

相關內容