symlinked目录中的相对符号链接

我已经在/home/appuser/app/安装了一个应用程序,在那个目录下有一个单独的目录confs config文件,它被链接到../app-confs ,如下所示:

 lrwxrwxrwx 1 appuser appuser 19 Mar 25 15:22 confs -> ../app-confs/ 

看起来不错,工作正常。

现在,我希望其他用户使用同一个目录( /home/appuser/app/ )中的/home/appuser/app/ ,因此更新只能在一个位置完成,但是可以使用不同的configs目录。

所以我在/home/user-a/ to /home/appuser/app/创build了一个符号链接。 我在/home/user-a/创build一个新的configs目录。

当list /home/user-a/ ,我确实看到

 drwxr-xr-x 8 user-a user-a 4096 Apr 29 10:57 app drwxr-xr-x 8 user-a user-a 4096 Apr 29 10:57 app-confs 

而在/home/user-a/app ,我明白了

 ... lrwxrwxrwx 1 appuser appuser 19 Mar 25 15:22 confs -> ../app-confs/ ... 

但是当我列出/home/user-a/confs/ ,我会看到来自/home/appuser/confs/ ,原来的confs而不是相关文件。

有没有办法与symlinked目录有一个相对的符号链接?

尝试这个:

 mkdir ~/TEST cd ~/TEST mkdir global cd global mkdir app mkdir conf touch conf/global_conf cd app ln -s ../conf conf cd ~/TEST mkdir user cd user ln -s ~/TEST/global/app app mkdir conf touch conf/user_conf cd app ls -l conf/ 

你会期望“user_conf”文件被显示,或不?

问:你会期望“user_conf”文件被显示,或不?

A:消极!

符号链接就像cd – 当你进入一个符号链接的目录时,你实际上正在进入目标目录。 因此,该(和其他)目录中的所有相对path(即符号链接)将相对于符号链接所在目录的物理位置。 换一种说法…

 cd ~/TEST/user/app 

是有效的

 cd ~/TEST/global/app 

因为最后一行

 cd ~/TEST mkdir user cd user ln -s ~/TEST/global/app app 

这里是certificate(-P参数显示了物理当前工作目录 – 即parsing符号链接,而没有任何参数的pwd通常会显示当前的逻辑工作目录):

 pwd -P /home/rouben/TEST/global/app/conf pwd /home/rouben/TEST/user/app/conf 

不幸的是,没有办法吃蛋糕,也没有办法! 我build议你谨慎使用符号链接,特别是如果你正在编程…这种设置可能会有意想不到的后果!

试试这个更简单的例子:

 cd ~ ln -s / root_of_everything cd root_of_everything pwd /home/rouben/root_of_everything pwd -P / 

第一个pwd输出“假”逻辑path。 第二个pwd,用-P输出实际的物理path。 我希望在“root_of_everything”下创build的任何符号链接必须与物理而不是逻辑path相关。

在我看来,那里出了点问题。 Listing /home/user-a/应该显示一个符号链接app和一个真实的目录app-confsconf只能显示在/home/user-a/app的列表中。 所以我build议你从/home/user-a/删除所有的东西,并向我们展示你使用的命令(如果它不能再工作的话)。