Tested in GNU bash, version 3.00.16(1)-release and 4.1.2(1)-release. Upon login, home dir is displayed as tilde in PS1: pan@BJ-APN-2 ~$ echo $PS1 \[\033[35m\]\u@\h \w$ \[\033[0m\] pan@BJ-APN-2 ~$ pwd /export/home/pan/
After a cd command, which change directory to $HOME (not changed at all), it is displayed as the complete path: pan@BJ-APN-2 ~$ cd pan@BJ-APN-2 /export/home/pan$ The reason is that my home in passwd has a trailing slash: pan@BJ-APN-2 /export/home/pan$ grep ^$USER: /etc/passwd pan:x:896:1::/export/home/pan/:/bin/bash This is tricky to find. I hope it will display tilde even if home dir entry in passwd has one or more trailing slash. PS: I read the source code and do not know where this is done, maybe in y.tab.c?