我需要一个可以解析的符号链接相对的到它所在的目录。使用什么命令来创建这样的东西?
答案1
- 转到您希望链接驻留的目录
- 运行命令
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