Thanks for all the feedback - this turned out to be quite informative.

So, I seem to have the following 2 methods:

P1=$(\dirname "$(\which "$0")")


P2=$(cd "$(\dirname "$0")"; pwd)

And they both seem to work in all the cases that I'm worried about,
anyway.  And if I followed the thread correctly, method two is better,
because it doesn't depend on any behavior from "which" - and that is
good, because which is not necessarily consistent across all
platforms.

However, since I barely know enough shell scripting to be dangerous,
can someone please explain to me why the second method works?  Why
doesn't the cd command leave me in a different place than where I
started, if I execute the script from another folder?  Does cd get
executed twice?

Thanks,

Dan