If I remember correctly from the top of my head, the following two are identical:
$ source script
So using the
./ "command" will in fact invoke
source under the hood, which on its part is a
bash builtin command. Or, in another interpretation they might be called aliases of each other.
However: The first invocation requires you, the user, to set the
+x (=executable) flag with
chmod for owner or group, otherwise you will get a "permission denied" error, whilst execution using the
source command is even possible without the
+x flag. So the latter will sometimes be your life-saver whenever you want to run a
bash script off an NTFS-formatted pendrive, for instance, since
chmod cannot work there.
I think that will answer your question as well in some way.
Because, for that reason,
bash script and
source script cannot be exactly the same; the one is calling the
bash program itself with your script given as a parameter, whilst the other is calling one of
bash's builtin commands with your script as a parameter.
Though the result will most probably be the same (at least in everyday use), the ways how to get there are somewhat different in both cases.