如何在 Linux 中创建相对符号链接?

如何在 Linux 中创建相对符号链接?

我需要一个可以解析的符号链接相对的到它所在的目录。使用什么命令来创建这样的东西?

答案1

  1. 转到您希望链接驻留的目录
  2. 运行命令ln -s ../some/other/file linkname

您提供的路径与文件一起存储。当您访问文件时,将查找并扩展相对于文件的存储路径。它不知道您在创建链接时位于哪个目录中。

答案2

GNU coreutils 的 ln(>= 8.16)的最新版本支持--relative(或-r)选项,这意味着您可以ln -s使用 2 个绝对或相对(相对于您的工作目录)路径进行调用,它会找出必须写入符号链接的正确相对路径。

答案3

你需要理解的是,符号链接更像是一个文本文件,而不是包含文件的目录条目。因此,如果你

echo ../poo >/file/name

那么这非常类似于

ln -s ../poo /file/name

系统/file/../poo根本不关心是否存在,它只是一段被放入符号链接的文本。当某些东西试图打开符号链接,这就是系统尝试解析它的时候。

如果您正在使用具有文件名补全功能的 shell,此功能可能会造成混淆,因为它允许您补全相对于当前工作目录的文件名,即使您最终将其用作完全另一个目录中的符号链接的目标。

答案4

在 OS X 上,相对链接对我来说比较棘手,例如

~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin ~/bin
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin/ ~/bin

两者都不起作用(创建了一些东西,但它不是目录)。我使用以下方法创建了所需的链接绝对路径

~/Dropbox/git/dave-bot $ ln -s ~/Dropbox/git/codyhess/bin/ ~/bin

相关内容