【问题标题】:Symbolic Link broken after creation创建后符号链接断开
【发布时间】:2019-03-03 12:36:12
【问题描述】:
  • 链接在我创建后立即断开。
  • 我正确地使用了lnln -s SOURCE TARGET

创建符号链接

$ sudo ln -s ./sites-available/examble.domain.com ./sites-enabled

编译 NGINX - 由于符号链接损坏而失败

注意: 问题与 NGINX 无关,NGINX 编译只是为了帮助我意识到问题的存在。 下面描述的解决方案适用于任何其他相关的问题。

$ sudo nginx -t
nginx: [emerg] open() "/etc/nginx/sites-enabled/example.domain.com" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed

确认符号链接已损坏

$ file ./sites-enabled/example.domain.com
./sites-enabled/example.domain.com: broken symbolic link to ./sites-available/example.domain.com

【问题讨论】:

  • 这是你的副本...How to symlink a file in Linux?
  • @jww 不,不是。这个答案会让我感到困惑,并且不会为我提供任何关于为什么我的不起作用的答案。我完全描述了为什么这不起作用,说您应该像在目标文件夹中一样包含源,而提议的“重复”问题的答案或问题不包含该源。请充分意识到,我写这个答案是为了帮助像我这样挣扎了几个小时的人。 重要提示“重复”的答案不包含相对路径。只有绝对的。

标签: linux bash ln


【解决方案1】:

问题是SOURCE放到目标目录时没有重新解释。

因此,如果您要链接的文件是 ~/file,并且您想使用以下方法将其链接到 ~/folder

ln -s ./file ./folder/

那么符号链接会认为file~/folder/file而不是~/file

因此,您必须进入目录~/folder 并从那里执行ln 命令。

所以,问题是......

ln 需要 SOURCE 相对于 TARGET 目录的目录。不是您当前目录的相对 SOURCE 目录。

最终解决方案

# Getting into the folder
cd ./sites-enabled

# Creating symbolic link
ln -s ../sites-available/example.domain.com ./

【讨论】:

  • 当然你也可以使用ln -s ../sites-available/example.domain.com sites-enabled,不用cd。这个解决方案的巧妙之处在于,如果您首先 do cd 到目录,则可以使用任何选项卡可完成路径,因为它已经与正确的目录相关。
  • 正确,它避免了混淆并有助于标签。事实上,我不确定这是否适用于TARGET 路径之外。感谢您的贡献和帮助!
猜你喜欢
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2012-11-14
  • 2016-10-14
  • 2012-08-06
相关资源
最近更新 更多