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
Is there a way to do this?
I am using bash.
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
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 ..
man builtinsfor documentation about the bash builtin
If you really dislike the directory tracking feature, you can turn it off with
set -Pin bash (
set -o no_chase_linkin zsh).
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