假设我的主文件夹中有文件夹〜/ a / b,并且文件夹b包含指向“ ..”的符号链接,名为“ symlink”。然后,我在bash中执行以下操作:
hm@mach:~$ cd a/b/symlink hm@mach:~/a/b/symlink$ pwd -P /home/hm/a hm@mach:~/a/b/symlink$ cd .. hm@mach:~/a/b$ pwd -P /home/hm/a/b
pwd -P打印当前工作目录,并取消引用所有符号链接。为什么工作目录位于/ home / hm / a / b的末尾,而不是/ home / hm?
根据help cd,
help cd
Options: -L force symbolic links to be followed: resolve symbolic links in DIR after processing instances of `..' -P use the physical directory structure without following symbolic links: resolve symbolic links in DIR before processing instances of `..'
换句话说,-L是指使用 逻辑 结构,而-P实际上使用 物理 目录结构。
-L
-P
逻辑结构是这样的,
$ tree a a └── b └── symlink -> ..
去的时候实际的物理结构a/b/symlink是
a/b/symlink
a
如果要使用 real ..,则还必须使用cd -P:
..
cd -P
The -P option says to use the physical directory structure instead of following symbolic links (see also the -P option to the set builtin command); the -L option forces symbolic links to be followed.
一个例子,
$ cd $ cd a/b/symlink # physical location is at a/ $ cd .. # now is at a/b $ cd symlink # goes back to a/b/symlink $ cd -P .. # follow physical path (resolve all symlinks) $ pwd -P # -P is optional here to show effect of cd .. /home/sarnold $