我已经浏览了一分钟,试图找到一种在相对符号链接内创建相对符号链接的方法,我的意思是......
我有我的 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
考虑到两棵树中目录数量的差异,我没有看到解决这个问题的方法。