Linux 执行权限

DD.*_*DD. 1 linux permissions bash cron

-rw-r--r--. 1 myusername developers 169 May 17 09:01 build.sh
Run Code Online (Sandbox Code Playgroud)

为什么我可以从命令行执行 build.sh 脚本,如果它没有执行权限,但是当 crontab 尝试执行它时,它失败了?

Eig*_*ony 5

您不能从命令行执行它,因为它没有执行权限。

您可以做的是从命令行获取它,

. ./build.sh
Run Code Online (Sandbox Code Playgroud)

这会导致当前 shell 执行文件中的命令,就好像它们是在命令行上键入的一样。

您不能从 cron 执行此操作,因此您需要授予脚本执行权限 ( chmod 744 build.sh)。

您还可以通过执行 shell 并将脚本传递给它来“运行”脚本,例如,

sh build.sh
Run Code Online (Sandbox Code Playgroud)

这是因为您正在执行sh(具有 +x 权限),并且它正在读取文件build.sh并运行命令,就好像它们是在命令行上键入的一样,然后再退出。