To my knowledge there is no such variable provided by the environment that will guarantee that its value is the physical path and not a linked version.
Given this your options are limited to the choices that you've already mentioned plus the following alternative.
You can use the command
readlink to get the physical directory/file that a symbolic link is pointing to:
$ ln -s /usr/bin/ack ack
$ ls -l |grep ack
lrwxrwxrwx 1 saml saml 12 Aug 15 11:48 ack -> /usr/bin/ack
$ readlink ./ack
$ readlink /home/saml/ack
$ readlink $HOME/ack
If the value you pass to
readlink isn't a link it won't return anything. You can force it to return the canonical value by using the
$ echo $PWD
$ readlink -f $PWD