Por que ln -s avisa que ele falha ao criar um link simbólico para um diretório simbolizado existente? [fechadas]

2

Ao executar (no linux diferentes variações do ubuntu):

>ln -s dir_1 symlink_dir
>ln -s dir_2 symlink_dir

Ele falha sem dizer que ele falha. Mas se você fizer a mesma coisa em um arquivo ou adicionar v à opção, ele diz que ele falha:

>ln -s file_1 symlinkg_file
>ln -s file_2 symlinkg_file

ou

>ln -sv dir_1 symlink_dir
>ln -sv dir_2 symlink_dir

Ele falha com a mensagem de erro:

ln: failed to create symbolic link

Para mim, isso parece ser um comportamento muito estranho? Existe uma razão para isso?

    
por giZm0 16.10.2012 / 09:01

1 resposta

3

Na verdade, não falha. Cria o seu link dentro do diretório indicado:

% mkdir dir_1 dir_2
% ln -s dir_1 symlink_dir
% ln -s dir_2 symlink_dir
% ls -l
total 0
drwxr-xr-x 2 user group 60 Oct 16 12:47 dir_1
drwxr-xr-x 2 user group 40 Oct 16 12:47 dir_2
lrwxrwxrwx 1 user group  5 Oct 16 12:47 symlink_dir -> dir_1
% ls -l dir_1
total 0
lrwxrwxrwx 1 user group  5 Oct 16 12:47 dir_2 -> dir_2

Esse comportamento é descrito na manpage:

 ln [OPTION]... TARGET... DIRECTORY     (3rd form)
 ...
 In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.

No entanto, esse link falha ao vincular de volta a dir_2, pois não está definido corretamente. Este também é um comportamento esperado e não deve falhar. A partir do manpage:

Symbolic links can hold arbitrary text; if later resolved, a relative link is interpreted in relation to its parent directory.

A propósito, funciona da mesma maneira para mim mesmo com -sv . Talvez você esteja usando uma implementação diferente de ln . Tem certeza de que não está usando -T ? Talvez isso esteja definido no seu ~/.bashrc / ~/.zshrc / etc. Experimente which ln .

    
por 16.10.2012 / 11:56

Tags