动态符号链接


10

我为不同的体系结构构建了我的应用程序,并希望创建一个“动态符号链接”,该链接可根据变量将我带到正确的版本。

如果我当前登录的计算机是x86,则符号链接应将我带到该版本。

我想做什么的一个模拟例子

$ uname -i
x86_64

$ ls -ltr 
lrwxr-xr-x  1 dogbane gg     4 Feb 16 15:40 mylink -> @sys/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 x86_64/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 i386/

$ cd mylink

$ pwd -P
~/x86_64

这可能吗?

我知道我可以使用cd $(uname -i),但想要更简单的方法。


您熟悉OpenAFS吗?因为它完全以这种方式使用@sys,甚至使用'@sys'。如果是这样,您是否正在寻找OpenAFS的替代产品?
jsbillings

@jsbilling我想知道在没有AFS的标准文件系统上是否可行。我很久以前曾经在AFS上工作,可以做到这一点,所以我为什么要问。
dogbane

我想了很多。我知道除了NetBSD的vfs.generic.magiclinks设置外,没有其他文件具有“魔术”符号链接。(daemon-systems.org/man/symlink.7.html
jsbillings

Ruby和Perl等环境都有,因此您可以在测试时选择使用哪个版本。您可能会在rvm.io/rubies中找到一些启发。
珍妮·D

Answers:



2

符号链接是静态的:文件系统仅存储一个字符串,对符号链接的访问将重定向到名称(相对于符号链接的位置)为该字符串的文件。

编写公开这种动态符号链接的FUSE文件系统很简单,但是我不知道现有的符号链接。


2

我认为这是二进制文件,因此我将使用PATH变量评分器(而不是symlink)来执行此操作。

PATH=$PATH:/base/$ARCH/bin

如果您使用的是cfengine或puppet之类的工具。可以根据系统架构创建指向相应目录的符号链接。


1

如果您只想输入比以下更简单的语法:

cd $(uname -i)

您可以将其放在类似以下的变量中:

 s=`uname -i` 

在您的登录脚本中,这样您就可以

 cd $s

当你想CD


0

symlink本质上是一个带有特殊标志的文件,其中包含一些路径,并且该路径按原样解释,因此您不能使一个符号链接以这种方式指向其他位置。但是您仍然可以编写将运行适当构建的脚本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.