I added a symlink to the current directory with ln -s . aa. If I execute cd aa, and after that I executed pwd, the response is /home/sim/aa.But if I execute /bin/pwd it prints /home/sim (the current directory hasn't changed).Where does this difference come from?
Strange difference between pwd and /bin/pwd
shell;symlink;pwd
In most shells including bash, pwd is a shell builtin:$ type -a pwdpwd is a shell builtinpwd is /bin/pwdIf you use /bin/pwd, you must use the -L option to get the same result as builtin pwd:$ ln -s . test$ cd test && pwd/home/cuonglm/test$ /bin/pwd/home/cuonglm$ /bin/pwd -L/home/cuonglm/testBy default, /bin/pwd ignores symlinks and prints the actual directory.From info pwd:`-L'`--logical'     If the contents of the environment variable `PWD' provide an     absolute name of the current directory with no `.' or `..'     components, but possibly with symbolic links, then output those     contents.  Otherwise, fall back to default `-P' handling.`-P'`--physical'     Print a fully resolved name for the current directory.  That is,     all components of the printed name will be actual directory     names--none will be symbolic links.The built-in pwd includes symlink by default, except that -P option is used, or -o physical set builtin is enabled.From man bash:pwd [-LP]              Print the absolute pathname of the  current  working  directory.              The pathname printed contains no symbolic links if the -P option              is supplied or the -o physical option to the set builtin command              is  enabled.  If the -L option is used, the pathname printed may              contain symbolic links.  The return status is 0 unless an  error              occurs  while  reading  the  name of the current directory or an              invalid option is supplied.