gpt4 book ai didi

linux - cd/bash 在符号链接(symbolic link)上的行为

转载 作者:IT王子 更新时间:2023-10-29 00:14:53 24 4
gpt4 key购买 nike

假设我的主文件夹中有文件夹 ~/a/b,文件夹 b 包含名为“symlink”的“..”的符号链接(symbolic link)。然后我执行以下操作庆典:

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 打印当前工作目录,取消引用所有符号链接(symbolic link)。为什么最后是工作目录/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

如果你想使用真正的 ..,那么你还必须使用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
$

关于linux - cd/bash 在符号链接(symbolic link)上的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com