When you are running a shell, there are two ways to invoke a shell script:
Executing a script spawns a new process inside which the script is running. This is done by typing the script name, if it is made executable and starts with a
#!/bin/bash
line, or directly invoking
/bin/bash mycmd.sh
Sourcing a script runs it inside its parent shell (i.e. the one you are typing commands into). This is done by typing
source mycmd.sh
or . mycmd.sh
So the cd inside a shell script that isn't sourced is never going to propagate to its parent shell, as this would violate process isolation.
If the cd is all you are interested about, you can get rid of the script by using cd "shortcuts"... Take a look into the bash doc, at the CDPATH env var.
Otherwise, you can use an alias to be able to type a single command, instead of source or .:
alias mycmd="source mycmd.sh"