我对这个错误感到非常困惑,甚至不知道该用 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 搜索什么词才能正确描述这种行为。
答案1
依靠 shebang 行执行脚本与将其作为参数传递给 shell 有很大不同。
在前一种情况下,文件必须位于可执行分区上,并且必须包含现有 shell 的有效 shebang 行。
在后一种情况下,这些都不是必需的,因为调用脚本的 shell 会负责这些事情。
请注意,您在这些测试中也没有使用相同的 shell:第一个推断 bash,而第二个使用 sh。
我的猜测是,你的脚本所在的分区不允许执行;mount -v
如果是这种情况,它会告诉你。