As everyone says:
. myfile . myfile : executes commands from myfile . (Like the source command in C Shell)
./myfile : executes myfile
To develop,. is the command itself (and myfile is passed as an argument), where ./ is the (relative) path to the file. When executing ./myfile you execute myfile , which is executable, and located in your current directory.
With that said, if you want to execute some kind of executable, for example a.out (which I assume is C or C ++ executable or something like that), you enter ./a.out .
When you have a command in a text file and you want your shell to run them, you enter . myfile . myfile The deepest example of this is probably when you change the contents of .bashrc or .profile files and you want to “apply” your changes to the system.
Finally, do not confuse the command . s which is your current directory (as in the first result of ls -a )
KyrSt source share