I have a symlink
~/link -> ~/a/really/long/path
When I do
cd ~/link
cd ..    
it takes me to
~
but I want to go to
~/a/really/long
Is there a way to do this?
I am using bash.
Bash (as well as ksh, zsh, and even ash) track directory changes so that cd /foo/bar && cd .. always takes you to /foo even if bar is a symlink. Pass the -P option to cd to ignore the tracked change and follow the “physical” directory structure:
cd -P ..
See help cd or man builtins for documentation about the bash builtin cd.
If you really dislike the directory tracking feature, you can turn it off with set -P in bash (set -o no_chase_link in zsh).
-P or -o physical already set?
                
                You can also use readlink to find the physical path to this directory, then go one directory higher:
cd $(readlink -f .)/..
One method you could use is to use an alias instead of a symlink to take you to ~/a/really/long/path. That's the method I use, since then I can just type a simple 1/2/et cetera letter command instead of cd symlink
cd ~/a/really/long/paththencd ..puts you in~at the moment? I can't reproduce that.~/a/really/long/paththen cd to that then to... You should end up back in ~ (assuming that's where you started).