如何在Linux中创建多级软链接或者可以这样做?

时间:2013-05-23 16:29:49

标签: linux unix symlink

我继承了无法触及的旧脚本 - 不要问。它引用位于/SuperSoft/SomeSoft/

位置的软件

该软件的新版本,自买断后重新制作,安装在现场 /usr/local/SomeSoft

我一直在试图在根级别创建以下软链接:

ln -s SuperSoft/SomeSoft/ /usr/local/SomeSoft/

我不想在根级别创建一个SuperSoft目录。可以这样做吗?

4 个答案:

答案 0 :(得分:1)

很难得到你想要的东西。使用此链接:

ln -s /usr/local/SuperSoft/ /SuperSoft/

现在,您可以使用以下ls来浏览/SuperSoft/SomeSoft的内容:

ls -al /SuperSoft/SomeSoft

答案 1 :(得分:1)

在文件系统的两个部分中使用相同的文件也可以使用mount实现。

来自linux上的“man mount”:

          Since Linux 2.4.0 it is possible to remount  part  of  the  file
          hierarchy somewhere else. The call is
                 mount --bind olddir newdir
          or shortoption
                 mount -B olddir newdir
          or fstab entry is:
                 /olddir /newdir none bind

          After  this  call the same contents is accessible in two places.

答案 2 :(得分:1)

您正在寻找第一种形式的ln

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)

使用-s作为选项,因为您需要符号链接。 TARGET是符号链接的“值” - 即链接将指向的内容。 LINK_NAME是正在创建的链接的实际位置。因此,要在/SuperSoft/SomeSoft处创建指向/usr/local/SomeSoft的符号链接,您可以这样做:

ln -s /usr/local/SomeSoft /SuperSoft/SomeSoft

在长列表中看起来像这样:

$ ls -l /SuperSoft/SomeSoft
lrwxrwxrwx 1 user group 18 May 23 13:43 /SuperSoft/SomeSoft -> /usr/local/SomeSoft

因此,您可以像/usr/local一样正常安装新版本的软件,并且当您尝试访问/usr/local时,现有的无法修改的脚本会指向/SuperSoft/SomeSoft

请注意,这样做假设存在名为/SuperSoft的目录。如果这不是您的选择(或者如果您不想这样做),那么您可以在/SuperSoft处创建指向/usr/localln -s /usr/local /SuperSoft)的符号链接,因为访问/Supersoft/SomeSoft将变为/usr/local/SomeSoft。我建议不要这样做,因为它不是很干净。

更新:

使/SuperSoft成为符号链接的另一种方法是:

mkdir /usr/local/SuperSoft
ln -s /usr/local/SuperSoft /SuperSoft
ln -s /usr/local/SomeSoft /SuperSoft/SomeSoft

在任何情况下,都需要有一个目录,其中包含指向/user/local/SomeSoft的链接。

答案 3 :(得分:0)

不,您无法创建作为目录路径的符号链接。符号链接只是普通目录中的一个条目,因此它必须符合所有常规命名规则。

如果你想要一个符号链接“/ SuperSoft / SomeSoft”,那么“/ SuperSoft”必须存在。它可以是一个目录,也可以是其他地方的符号链接,但它必须是某种东西。

如果你绝对想避免在/中创建一个新目录,那么你可以用相应的目录/符号链接/等创建一个假/并在那里运行chrooted()脚本。但这比设置一个目录要多一些。