If I do
pwd I notice it uses whatever symlinks I used to get into the current directory. Can I get it to tell me the "real" directory I'm in ... i.e. the path from the root to my current directory without the use of any symlinks?
If I do
The pwd shell built-in uses the path the shell keeps track of when you
cd (and stores it in
$PWD). This means if you have a symlink to a complex (deep) path, it will tell you what you typed to change to that directory instead of the real path. This is done to give you what you want most of the time.
/bin/pwd uses the
getcwd system call (which these days is a library call, reading
/proc/self/cwd) which returns the canonical path for the current directory, sans all symlink traversals.
As Steven D pointed out,
pwd has the
-P option to ignore
$PWD. It also has the
-L option to return the contents of
$PWD. The man page for
pwd does not say which option is used by default but experience tells me the above description is correct (shell
/bin/pwd). However you should probably not rely on that and just use