如果我创建一个目录mkdir -p
,它会导致脚本出现问题
$ mkdir -p test2/test2
$ cd test2/test2
$ echo '#!/bin/sh
> echo hello' > hello.sh
$ ./hello.sh
bash: ./hello.sh: Permission denied
如果我创建一个目录mkdir -p
,它会导致脚本出现问题
$ mkdir -p test2/test2
$ cd test2/test2
$ echo '#!/bin/sh
> echo hello' > hello.sh
$ ./hello.sh
bash: ./hello.sh: Permission denied
这无关mkdir
。您根本没有授予hello.sh
可执行权限。您需要以下内容:
chmod +x hello.sh
检查您的目录和脚本本身的权限。那里可能有问题,尽管不太可能。
ls -lad test2/test2
ls -l test2/test2/hello.sh
如果由于某种原因未正确设置您的权限,您始终可以将--mode标志与mkdir一起使用。有关详细信息,请参阅 chmod(1) 和 mkdir(1)。
只要当前用户可以读取文件,就可以直接使用 Bash 执行脚本,而不是依赖 shebang 行或可执行位。例如:
bash test2/test2/hello.sh
如果您可以在使用 Bash 显式调用时执行该文件,那么您只需要确保您的文件设置了执行位。例如:
chmod 755 test2/test2/hello.sh