Criar link para o executável no diretório pai (..)

1

Crie os seguintes diretórios:

parent/child

Navegue até filho e crie um arquivo chamado child (este é um arquivo executável no meu caso, não tenho certeza se isso faz diferença).

Eu preciso criar dois links "link para executável" no pai. Eu tinha assumido que isso funcionaria:

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

Mas isso cria um "link para a pasta" (./child) no diretório pai.

Se eu alterá-lo para:

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

Eu recebo um erro, "ln: '../child': não é possível sobrescrever o diretório".

Se eu fizer isso a partir do diretório pai (o que não posso fazer, isso é parte de uma receita do Makefile):

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

Funciona.

Note que não posso alterar os nomes de nenhum diretório ou arquivo.

Como faço para criar os links quando o diretório atual é o filho?

    
por Tergiver 27.06.2011 / 21:11

1 resposta

4

Isso porque o primeiro argumento, TARGET, é relativo ao local do link. Em outras palavras, você está criando links chamados parent / child1 e parent / child2 que são vinculados a ./ child . Na perspectiva desses links, ./ child é o diretório. Você precisa vincular a ./ child / child . Ou melhor ainda, crie um link absoluto:

ln -sf /full/path/to/parent/child/child ../child1
ln -sf /full/path/to/parent/child/child ../child2
    
por 27.06.2011 / 21:17