【问题标题】:dynamic absolute path symlinks动态绝对路径符号链接
【发布时间】:2016-03-23 17:40:48
【问题描述】:

有没有办法为符号链接创建动态绝对路径?

每次我尝试使用相对路径创建符号链接时,链接都会被解析为损坏。我唯一的选择是使用绝对路径创建符号链接

    ex. ln -s $PATH/folder docroot/folder1 

虽然这有效,但当我将代码推送到远程服务器时,路径仍在我的主目录中查找并导致权限被拒绝错误。 所以,我想知道是否有办法伪造绝对路径?

项目的文件结构如下:

SiteName
  Docroot
     folder
     folder
     folder

【问题讨论】:

  • 抱歉,不清楚您的实际要求。符号链接完全指向您指定的路径。如果这是相对路径或绝对路径,则无关紧要。您发布的示例使用绝对路径,所以我想知道您是否真的以正确的方式使用术语absoluterelative...
  • 抱歉,已将 $PTH 更改为 $PATH。这是返回您所在的绝对路径的全局变量。所以目标本质上是:User/MyName/Sites/projects/SiteName/docroot/folder,链接是 docroot/folder1
  • 我尝试从 docroot 和项目根目录创建符号链接,但每次链接都被破坏。因此,当我尝试 cd 进入文件夹 1 时,出现“不是文件或目录”错误。
  • 你说“$PATH。这是一个全局变量,它返回你所在的绝对路径。”不,不是。试试 $PWD。​​span>
  • @hymie 是对的。最重要的是:User/MyName/Sites/projects/SiteName/docroot/folder 不是绝对路径。 /User/MyName/Sites/projects/SiteName/docroot/folder 是绝对路径。

标签: linux symlink


【解决方案1】:

您最初使用相对链接的想法非常合适,但很可能只是没有正确实施。要正确创建相对符号链接:

  • 给定目录结构:

    SiteName
      docroot
         folder
    
  • 您当前的工作目录:SiteName

  • 你想要:docroot/folder1 -> docroot/folder

试试:

$ ln -s folder docroot/folder1

如果您有tree 程序,您可以看到结构,以及符号链接folder1 成功指向docrootfolder

$ tree
.
└── docroot
    ├── folder
    └── folder1 -> folder

3 directories, 0 files

说明

您最初尝试相对链接失败的原因可能是对relative 链接的要求存在常见的误解:

Shadur's Unix & Linux answer 提及:

符号链接相对于链接所在的位置,而不是您创建链接时的位置。 ...

所以,

  • folder1 的角度来看,folder 的相对路径只是folder,因为它们是同一个目录的兄弟
  • 命令语法为ln -s <relative path> <where to create new link>
  • SiteName 运行命令时,将在docroot/folder1 创建新链接

所以最后的命令是ln -s folder docroot/folder1 正确创建在docroot/folder1 指向同一目录中的folder

因此,只要您不更改它们的相对位置,它现在就可以工作。

【讨论】:

    猜你喜欢
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多