我继承了无法触及的旧脚本 - 不要问。它引用位于/SuperSoft/SomeSoft/
该软件的新版本,自买断后重新制作,安装在现场
/usr/local/SomeSoft
我一直在试图在根级别创建以下软链接:
ln -s SuperSoft/SomeSoft/ /usr/local/SomeSoft/
我不想在根级别创建一个SuperSoft
目录。可以这样做吗?
答案 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/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
的链接。
答案 3 :(得分:0)
不,您无法创建作为目录路径的符号链接。符号链接只是普通目录中的一个条目,因此它必须符合所有常规命名规则。
如果你想要一个符号链接“/ SuperSoft / SomeSoft”,那么“/ SuperSoft”必须存在。它可以是一个目录,也可以是其他地方的符号链接,但它必须是某种东西。
如果你绝对想避免在/中创建一个新目录,那么你可以用相应的目录/符号链接/等创建一个假/并在那里运行chrooted()脚本。但这比设置一个目录要多一些。