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.
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityBash (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).
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/path
thencd ..
puts you in~
at the moment? I can't reproduce that.~/a/really/long/path
then cd to that then to..
. You should end up back in ~ (assuming that's where you started).