親ディレクトリ(..)に実行可能ファイルへのリンクを作成します


1

次のディレクトリを作成します。

parent/child

childに移動し、という名前のファイルを作成しますchild(これは私の場合は実行可能ファイルです。違いがあるかどうかはわかりません)。

親に2つの「実行可能ファイルへのリンク」リンクを作成する必要があります。私はこれがうまくいくと思っていました:

ln -sf ./child ../child1
ln -sf ./child ../child2

しかし、それは親ディレクトリに「フォルダへのリンク」(./child)を作成します。

次のように変更した場合:

ln -sf -t.. ./child child1
ln -sf -t.. ./child child2

「ln: '../child':ディレクトリを上書きできません」というエラーが表示されます。

親ディレクトリから実行する場合(実行できませんが、これはMakefileレシピの一部です):

ln -sf ./child/child ./child1
ln -sf ./child/child ./child2

できます。

ディレクトリやファイルの名前は変更できないことに注意してください。

現在のディレクトリが子である場合、どのようにリンクを作成しますか?

回答:


5

最初の引数、TARGETは、だからです相対リンクの場所へ。つまり、両方とも./childにリンクするparent / child1およびparent / child2と呼ばれるリンクを作成しています。これらのリンクから見ると、。/ childはディレクトリです。./child/childにリンクする必要があります。さらに良いことには、絶対リンクを作成します。

ln -sf /full/path/to/parent/child/child ../child1
ln -sf /full/path/to/parent/child/child ../child2

ただし、Makefileでfull / path / to / parentをハードコーディングする必要があります。私はちょうどln -sf ../child/child ../child1壊れたリンクを生成しようとしました。フルパスなしでそれを行う方法はありませんか?
タージバー

あなたが言ったように、../child/childではなく、. / child/childを私が提案したように使用してください。しかし、とにかくMakefileでフルパスを使用するのは簡単です。私はそれを行うすべての時間の私自身のMakefile中を。
-Flimzy

1
そのとおり、$(ROOTDIR)変数にアクセスできたので、ハードコードされたパスではなく、フルパスで実行できました。ありがとうございました。
タージバー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.