【问题标题】:Symbolic Link Edits and differences to hard link [closed]符号链接编辑和硬链接的差异[关闭]
【发布时间】:2018-07-19 17:13:16
【问题描述】:

我刚刚创建了一个指向目录的符号链接:

ln -s /path/to/real/ link

1 - 如果我将cd 更改为link/,我在其中所做的任何更改会反映在原始目录中吗?

2 - 另外,源目录是一个 git repo,所以我可以从 symlink'ed 目录执行 git 命令吗?

3 - 这些答案和任何关于符号/硬链接(或一般ln)之间差异的一般解释都会动摇。

谢谢!

【问题讨论】:

  • 这是一个 Unix 问题,不是编程问题。
  • 对于第一个问题:是的,任何更改都会反映在原始目录上。对于第二个,请看这里:askubuntu.com/questions/108771/…

标签: linux bash git symlink ln


【解决方案1】:

符号链接就像原始目录的另一个名称一样工作。它们与硬链接不同,因为如果将原始文件替换为同名的新文件,则符号链接将指向新文件。硬链接仍会链接到原始文件,无论它具有什么名称。

符号链接可以“悬挂”,这意味着它的目标不再存在。硬链接不能。

目录不能被硬链接。在过去这是允许的,但它会产生目录循环的可能性,这是一件坏事。

是的,如果您cd symlink,您可以做任何您想做的事情,就像您在实际目录中一样,因为您在实际目录中。你的 shell,取决于它的配置设置,会让你认为你在符号链接命名的目录中,但是所有的操作系​​统函数都会返回实际的目录名称。

【讨论】:

  • 目录的硬链接真的很古老——它们在第 7 版 Unix 中(但不鼓励),但我不确定它们持续了多长时间。可能进入 SVR4,但我怀疑不是。
  • @JonathanLeffler 古老的头发花白的助教(他们一定是 24 岁!)在本科计算机实验室闪烁的荧光灯周围讲述着恐怖故事。
【解决方案2】:

当您执行cd link/ 时,您的当前目录变为/path/to/real,并且您在该目录中所做的任何更改都在“真实目录”中。

注意 cd -Lcd -P — 请参阅 cd 上的 POSIX — 与 pwd 类似。

【讨论】:

  • 好的,很酷。我不确定的唯一原因是因为 pwd 没有显示这一点。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2021-12-19
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多