【发布时间】:2012-07-14 16:50:54
【问题描述】:
如果我使用mkdir -p 创建目录,则会导致脚本出现问题
$ mkdir -p test2/test2
$ cd test2/test2
$ echo '#!/bin/sh
> echo hello' > hello.sh
$ ./hello.sh
bash: ./hello.sh: Permission denied
【问题讨论】:
标签: bash permissions mkdir
如果我使用mkdir -p 创建目录,则会导致脚本出现问题
$ mkdir -p test2/test2
$ cd test2/test2
$ echo '#!/bin/sh
> echo hello' > hello.sh
$ ./hello.sh
bash: ./hello.sh: Permission denied
【问题讨论】:
标签: bash permissions mkdir
这与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
【讨论】: