我继承了无法触及的旧脚本 - 不要问。它引用安装在该位置的软件/SuperSoft/SomeSoft/
自买断后重新制作的新版软件,安装在现场
/usr/local/SomeSoft
我一直在尝试在根级别创建以下软链接:
ln -s SuperSoft/SomeSoft/ /usr/local/SomeSoft/
我不想SuperSoft
在根级别创建一个目录。这可以做到吗?
很难得到你想要的。使用此链接:
ln -s /usr/local/SuperSoft/ /SuperSoft/
现在您可以使用以下ls
内容浏览内容/SuperSoft/SomeSoft
:
ls -al /SuperSoft/SomeSoft
在文件系统的两个部分中拥有相同的文件也可以通过 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.
您正在寻找的第一种形式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
.
不,您不能创建作为目录路径的符号链接。符号链接只是普通目录中的一个条目,因此它必须符合所有常规命名规则。
如果你想要一个符号链接“/SuperSoft/SomeSoft”,那么“/SuperSoft”必须存在。它可以是一个目录,也可以是指向其他地方的符号链接,但它必须是某种东西。
如果您绝对想避免在 / 中创建新目录,那么您可以使用适当的目录/符号链接/等创建一个假 / 并在那里运行脚本 chrooted()。但这比仅仅创建一个目录要多得多。