我已经在/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-confs 。 conf只能显示在/home/user-a/app的列表中。 所以我build议你从/home/user-a/删除所有的东西,并向我们展示你使用的命令(如果它不能再工作的话)。