CD / bash在符号链接上的行为

假设我的主文件夹中有文件夹〜/ 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

  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 a

a

└── 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

回到顶部