当前位置: 首页 > 面试题库 >

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

柴文林
2023-03-14
问题内容

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


 类似资料:
  • 我完全是Docker的不速之客,很抱歉,如果这是一个简单的问题,我似乎在Docker中有一个重大的安装/配置错误。我正在重新安装Ubuntu 20.04和Docker版本20.10.12,build e91ed57。 我从字面上试图遵循初学者从他们的网站和第二个命令是不工作的基本Docker教程。 教程没什么大不了的,我可以把教程换成更新的,但Docker的关键功能似乎没有正常工作。。符号链接。

  • 又一个Docker符号链接问题。我有一堆文件,我想复制到我所有的Docker构建。我的dir结构是: 有没有办法让Docker遵循符号链接并将common_files/file.txt复制到构建的容器中?

  • 问题内容: 如何使用GNU ld将符号链接到特定的固定地址,以便二进制文件仍可以在Linux(x86)中正常执行?不会访问这些符号,但是它们的地址很重要。 例如,我将具有以下结构: 我想链接到地址0x76543210,但通常会链接标准库和应用程序的其余部分。然后,应用程序将使用foobar的地址,但不会引用其后面的(可能不存在)内存。 此请求的基本原理是,可以在两个平台上使用相同的源:在本机平台上

  • 问题内容: 另一个Docker符号链接问题。我有一堆文件要复制到我的所有Docker构建中。我的目录结构是: 在上面的示例中,当我在dir1中进行docker构建时,我希望将file.txt复制过来。但是我不想维护file.txt的多个副本。每此链接,作为搬运工版本0.10,码头工人的作品必须 按照容器根目录内的符号链接获取ADD构建说明。 但是当我在Dockerfile中使用以下任一行进行构建时

  • 问题内容: 给定一个Java“文件”对象,如何检测它是否指向符号链接? (如果有帮助/重要,我知道该文件引用的是目录,而不是文件) 问题答案: 您也可以使用isSymbolicLink(Pathpath)方法。它将更加可靠。 Java Doc“检测符号链接 ”中的类似示例。