Linux符号链接:如何转到指向的目录?

Pie*_*tro 7 linux symbolic-link xfce

我在它自己的目录中有一个项目:

/目录/到/项目/

我在桌面上有一个指向该目录的符号链接:

/家/用户/桌面/项目/

当我双击该链接时,打开的目录窗口是:

/家/用户/桌面/项目/

而不是真正的,/dir/to/project

命令行 (Bash) 也会发生同样的情况。

是否有可能得到我想要的,即转到指向的目录,而不是符号目录?

注意:我现在使用的 windows 环境是 Xfce,但我也对通用答案感兴趣。

Kam*_*ski 15

bashcd内置用途-P-L开关; pwd以同样的方式理解它们:

user@host:~$ ln -s /bin foobar
user@host:~$ cd -L foobar      # follow link
user@host:~/foobar$ pwd -L     # print $PWD
/home/user/foobar
user@host:~/foobar$ pwd -P     # print physical directory
/bin
user@host:~/foobar$ cd -       # return to previous directory
/home/user
user@host:~$ cd -P foobar      # use physical directory structure
user@host:/bin$ pwd -L         # print $PWD
/bin
user@host:/bin$ pwd -P         # print physical directory
/bin
Run Code Online (Sandbox Code Playgroud)

此外cd ..可能很棘手:

user@host:/bin$ cd
user@host:~$ cd -L foobar
user@host:~/foobar$ cd -L ..   # go up, to ~/
user@host:~$ cd -L foobar
user@host:~/foobar$ cd -P ..   # go up, but not to ~/
user@host:/$
Run Code Online (Sandbox Code Playgroud)

help cdhelp pwd。请注意,您可能还有一个/bin/pwd类似的可执行文件(即不是内置的 shell)。在我的Kubuntu所不同的是pwd,没有任何选项使用内置-L/bin/pwd默认情况下使用-P

您可以cd通过set -P(cd作为cd -P) 和set +P(cd作为cd -L)调整内置的默认行为。详情请参阅help set


xen*_*oid 7

用于readlink解析指向其目标的链接:

cd $(readlink thelink)
Run Code Online (Sandbox Code Playgroud)

您可能想在 bash 配置文件中定义一个函数:

function cdl { local dir=$(readlink -e $1); [[ -n "$dir" ]] && cd $dir; }
Run Code Online (Sandbox Code Playgroud)