符号链接目录中的相对符号链接

符号链接目录中的相对符号链接

我在该目录中安装了一个应用程序,/home/appuser/app/其中有一个confs用于配置文件的单独目录,该目录符号链接到../app-confs,如下所示:

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

看起来不错,运行也不错。

现在,我希望其他用户从同一目录(/home/appuser/app/)使用该应用程序,这样就可以只在一个地方进行更新,但使用不同的配置目录。

/home/user-a/因此我在中创建了一个符号链接。然后在 中/home/appuser/app/创建了一个新的 configs 目录。confs/home/user-a/

当列表时/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/原始配置文件的文件,而不是相对配置文件的文件。

有没有办法让符号链接目录具有相对符号链接?

尝试这个:

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”文件?

答案1

问:您是否希望显示“user_conf”文件?

答:否定的!

符号链接就像 cd - 当您进入符号链接目录时,实际上是进入目标目录。因此,该目录(以及任何其他目录)中的所有相对路径(即符号链接)都将相对于符号链接所在目录的物理位置。换句话说...

cd ~/TEST/user/app

有效地

cd ~/TEST/global/app

因为最后一句

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

下面是证明(-P 参数显示物理当前工作目录 - 即解析符号链接,而没有任何参数的 pwd 通常会显示逻辑当前工作目录):

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

pwd
/home/rouben/TEST/user/app/conf

不幸的是,鱼和熊掌不可兼得!我建议您谨慎使用符号链接,尤其是如果您正在编程……这种设置可能会产生意想不到的后果!

尝试这个更简单的例子:

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

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

答案2

我觉得那里出了点问题。列表/home/user-a/应该显示一个符号链接app和一个真实目录app-confsconf应该只显示在列表中/home/user-a/app。所以我建议你删除所有内容,/home/user-a/并向我们展示你使用的命令(如果它再次不起作用)。

相关内容