ad 1: It's not changing the path because the
cd is run in the context of the shell script process, which does not influence the interactive shell process.
ad 2: See above. If you manually
source the file, its commands are run in the context of the current shell, thus the path change
ad 3: Huh?
Generally: please start using
[CODE] tags for script listings and similar.