CD / bash在符号链接上的行为
假设我的主文件夹中有文件夹〜/ a / b,并且文件夹b包含指向“ ..”的符号链接,名为“ symlink”。然后,我在bash中执行以下操作:
hm@mach:~$ cd a/b/symlinkhm@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
,
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
实际上使用 目录结构。
逻辑结构是这样的,
$ tree aa
└── b
└── symlink -> ..
去的时候实际的物理结构a/b/symlink
是
a
如果要使用 real..
,则还必须使用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
$
以上是 CD / bash在符号链接上的行为 的全部内容, 来源链接: utcz.com/qa/404423.html