sh ~/test.sh 在子shell中执行,不需要执行权限
./test.sh 在子shell中执行,需要执行权限
. ~/test.sh 在当前shell执行,不需要执行权限
source ~/test.sh 在当前shell执行,不需要执行权限
子shell:在当前shell中创建一个shell
子shell继承父shell:当前目录、环境变量、stdin、stdout、stderr、句柄fd
子shell不能继承父shell的非环境变量和不在.bashrc中定义的变量
在当前shell中执行的情况:如果希望脚本中定义的东西(如在.bashrc定义别名)能在当前shell起作用,则在当前shell执行。