動的シンボリックリンク


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

回答:



2

シンボリックリンクは静的です。ファイルシステムは文字列を格納するだけで、シンボリックリンクへのアクセスは、その名前が(シンボリックリンクの場所を基準にして)その文字列であるファイルにリダイレクトされます。

このような動的なシンボリックリンクを公開するFUSEファイルシステムを書くのは簡単ですが、既存のものは知りません。


2

これはバイナリだと思いますので、symlinkではなくPATH変数の評価者を使用します。

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

cfengineやpuppetなどのツールを使用している場合。システムアーキテクチャに基づいて、適切なディレクトリへのシンボリックリンクを作成できます。


1

入力する構文を単純にしたい場合:

cd $(uname -i)

次のような変数に入れることができます。

 s=`uname -i` 

ログインスクリプトで、あなたはただ行うことができます

 cd $s

cdしたいとき


0

シンボリックリンクは基本的に、パスを含む特別なフラグを持つファイルであり、このパスはそのまま解釈されるため、1つのシンボリックリンクで他の場所を指すようにすることはできません。ただし、適切なビルドを実行するスクリプトを作成することはできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.