Most likely, you have an environment variable named PWD that is set to a value other than the name of your current directory. This is most likely caused by using two different shell programs. `ksh' and (some versions of) `csh' set and maintain the value of the PWD environment variable, but `sh' doesn't. If you start sh from ksh, change your current directory inside sh, and then start Emacs from inside sh, PWD will have the wrong value but Emacs will use this value. See the etc/OPTIONS file for more details.
Perhaps an easier solution is not to use two shells. The `chsh' program can often be used to change one's default login shell.
You may have PWD set for other reasons. Another possibility is that you are setting default-directory from your .emacs file.
Here is a fix by Jim Blandy <firstname.lastname@example.org>:
>--- emacs/jjj/emacs-18.58/lisp/startup.el Tue Jan 15 23:19:04 1991 >+++ startup.el Mon Apr 20 00:21:01 1992 >@@ -81,5 +81,7 @@ > ;; In presence of symlinks, switch to cleaner form of default directory. > (if (and (not (eq system-type 'vax-vms)) >- (getenv "PWD")) >+ (getenv "PWD") >+ (equal (nthcdr 10 (file-attributes default-directory)) >+ (nthcdr 10 (file-attributes (getenv "PWD"))))) > (setq default-directory (file-name-as-directory (getenv "PWD")))) > (unwind-protect