三者的区别大致如下:
source script.sh 会在当前进程下执行脚本,并且脚本中设置的变量在脚本执行完毕后会保存下来。
. script.sh 和 source script.sh 是一样的,在一些环境下有一些细微差别的,如 source 不是 POSIX 所要求的。
./script.sh 则是会在单独的子进程中执行,脚本中设置的变量在脚本执行完毕后不会保存。但是若 script.sh 脚本不是以 #!/bin/bash 开头,那么也不会在子进程中执行。
https://hoxis.github.io/linux-run-shell.html