在相对符号链接内创建相对符号链接

在相对符号链接内创建相对符号链接

我已经浏览了一分钟,试图找到一种在相对符号链接内创建相对符号链接的方法,我的意思是......

我有我的 CakePHP 模板骨架作为我的一个项目内的符号链接,在我的骨架内,我有一个到骨架文件夹外部插件的符号链接,想法是,我可以在我的项目内符号链接我的 CakePHP CMS 骨架,创建一个“应用程序” ” CMS 骨架符号链接之外的插件,并且骨架符号链接指向我的项目“应用程序”插件。

我的意思是以下内容。

我有一个 CakePHP CMS 骨架,位于以下路径

/mnt/proj/libs/cakephp/lib/Cake/Console/Templates/skel

我的项目文件夹的路径如下

/mnt/proj/mysite.com/

然后我将 CakePHP CMS Skeleton 符号链接到我的项目文件夹中,如下所示

/mnt/proj/mysite.com/cms-skel -> /mnt/proj/libs/cakephp/lib/Cake/Console/Templates/skel

在骨架内部,我有一个指向应用程序插件的符号链接

/mnt/proj/libs/cakephp/lib/Cake/Console/Templates/skel/Plugin/Application -> ../../Application

因此,在 mysite.com 文件夹中的 CakePHP CMS 符号链接文件夹中,我有

/mnt/proj/mysite.com/cms-skel/Plugin/Application -> ../../Application

问题是,上面的符号链接指向

/mnt/proj/libs/cakephp/lib/Cake/Console/Templates/Application

我需要它指向

/mnt/proj/mysite.com/cms-skel/Plugin/Application

关于如何使用符号链接执行上述操作的任何想法都非常感谢,我什至不确定此时要谷歌什么。

答案1

您的问题是您尝试使用可在两个目录树中工作的单个相对链接,但链接的相对性在这两个目录树中并不相同。

例子

我已经从 开始创建了您的目录结构proj,但除此之外它们是相同的。

$ pwd
/home/saml/proj

这是lib/树:

$ tree -lf libs/
libs
`-- libs/cakephp
    `-- libs/cakephp/lib
        `-- libs/cakephp/lib/Cake
            `-- libs/cakephp/lib/Cake/Console
                `-- libs/cakephp/lib/Cake/Console/Templates
                    |-- libs/cakephp/lib/Cake/Console/Templates/Application
                    `-- libs/cakephp/lib/Cake/Console/Templates/skel
                        `-- libs/cakephp/lib/Cake/Console/Templates/skel/Plugin
                            `-- libs/cakephp/lib/Cake/Console/Templates/skel/Plugin/Application -> ../../Application  [recursive, not followed]

这是mysite.com/树:

$ tree -lf mysite.com/
mysite.com
`-- mysite.com/cms-skel -> /home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel/
    `-- /home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel//Plugin
        `-- /home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel//Plugin/Application -> ../../Application

因此,如果我们查看第一棵树中的应用程序链接lib/

$ pwd
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel/Plugin

$ readlink -f Application
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/Application

然而,如果我们在目录中进行相同的分析,mysite.com/我们就会发现问题。

$ pwd
/home/saml/proj/mysite.com/cms-skel/Plugin

$ readlink -f Application
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/Application

这是怎么回事?

好吧,当你在树上时,mysite.com/上面 2 层mysite.com/cms-skel/Plugin/就是libs/cakephp/lib/Cake/Console/Templates

这应该有助于看到它:

$ pwd
/home/saml/proj/mysite.com/cms-skel/Plugin

$ readlink -f ../../
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates

考虑到两棵树中目录数量的差异,我没有看到解决这个问题的方法。

相关内容