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
的区别一样。
每对中的前者将文件用作其他命令的参数。
每对中的后者使用文件作为命令到运行。
运行一个命令需要可执行权限。使用文件作为参数不会。
我有一个简单的可执行 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
的区别一样。
每对中的前者将文件用作其他命令的参数。
每对中的后者使用文件作为命令到运行。
运行一个命令需要可执行权限。使用文件作为参数不会。