Linux
使用 ./script.sh 執行腳本失敗,而“sh script.sh”工作
我對這個錯誤感到非常困惑,甚至不知道該Google搜尋什麼:
失敗- 執行腳本:
./test.sh bash: ./test.sh: "Permission denied"
有效- 雖然這些方法有效:
sh ./test.sh Works bash ./test.sh Works
測試腳本:
cat test.sh #!/bin/bash echo "Works"
擁有所有執行權限:
chmod 777 test.sh ls -als test.sh 4 -rwxrwxrwx 1 edo edo 27 13. Feb 10:41 test.sh
我對為什麼會發生這種情況一無所知,因為這對我來說沒有任何意義,而且我不知道Google用什麼詞來正確描述這種行為..
根據 shebang 行執行腳本與將其作為參數傳遞給 shell 完全不同。
在前一種情況下,文件必須駐留在可執行分區上,並且必須包含對現有 shell 的有效 shebang 行。
在後一種情況下,這些都不是必需的,因為您呼叫腳本的 shell 負責這些事情。
請注意,您也沒有在這些測試中使用相同的 shell:第一個推斷 bash,而第二個使用 sh。
我的猜測是您的腳本所在的分區不允許執行;
mount -v
會告訴你是否是這種情況。