在父目录(..)中创建指向可执行文件的链接


1

创建以下目录:

parent/child

导航到child并创建一个名为的文件child(就我而言,这是一个可执行文件,不确定是否有区别)。

我需要在父级中创建两个“可执行文件链接”链接。我以为这会起作用:

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

有用。

请注意,我无法更改任何目录或文件的名称。

当前目录为子目录时,如何创建链接?

Answers:


5

这是因为第一个参数TARGET是对于链接位置的。换句话说,您正在创建名为parent / child1parent / child2的链接,它们都链接到./child。从这些链接的角度来看,。/ child是目录。您需要链接到./child/child。或者更好的是,创建一个绝对链接:

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

但这需要在Makefile中对完整/路径/到/父项进行硬编码。我只是试过了ln -sf ../child/child ../child1,产生了一个损坏的链接。没有完整的路径,没有办法做到吗?
Tergiver 2011年

使用./child/child我建议,而不是../child/child,因为你说你做了。但是无论如何,在Makefile中使用完整路径应该很容易。我这样做,所有的时间在我自己的Makefile文件。
Flimzy 2011年

1
没错,我可以访问$(ROOTDIR)变量,该变量使我可以使用完整路径而不是硬编码路径。谢谢。
Tergiver 2011年
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.