0

我继承了无法触及的旧脚本 - 不要问。它引用安装在该位置的软件/SuperSoft/SomeSoft/

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

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

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

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

4

4 回答 4

1

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

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

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

ls -al /SuperSoft/SomeSoft
于 2013-05-23T16:32:12.080 回答
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.
于 2013-05-23T17:31:37.047 回答
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/local( ln -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.

于 2013-05-23T17:47:58.380 回答
0

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

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

如果您绝对想避免在 / 中创建新目录,那么您可以使用适当的目录/符号链接/等创建一个假 / 并在那里运行脚本 chrooted()。但这比仅仅创建一个目录要多得多。

于 2013-05-23T19:32:18.313 回答