bash 中关于权限的来源和“./”之间的区别?

Difference between source and './' with respect to permissions in bash?

我有一个简单的可执行 shell 文件 testperm.sh,权限为 -rw-------@

当我执行 source testperm.sh. testperm.sh 时,文件会执行并打印 Hello...........,这是应该的。

但是,如果我 运行 ./testperm.sh,我得到 -bash: ./testperm.sh: Permission denied。为什么使用此命令拒绝该权限,但使用 source 却可以正常工作?

(顺便说一句,我指的是 OS X 上的 bash shell)

source testperm.sh/. testperm.sh./testperm.sh的区别就像ls /bin/bash/bin/bash的区别一样。

每对中的前者将文件用作其他命令的参数

每对中的后者使用文件作为命令到运行。

运行一个命令需要可执行权限。使用文件作为参数不会。