¿Por qué "ln -s A B" es diferente de "ln -s A/ B"?

¿Por qué "ln -s A B" es diferente de "ln -s A/ B"?

¿No es Alo mismo que A/?

¿Por qué son tratados de manera diferente por ln?

Respuesta1

EDITAR: Leí mal la pregunta. Pensé que preguntabas sobre ls, pero preguntabas sobre ln. Gracias Martijn por el comentario.

De todos modos, no veo ninguna diferencia por mi parte:

$ mkdir 1
$ touch 2
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 2010-12-20 21:48 1
-rw-r--r-- 1 user user    0 2010-12-20 21:48 2
$ ln -s 1 3
$ ln -s 1/ 3s
$ ln -s 2 4
$ ln -s 2/ 4s
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 2010-12-20 21:48 1
-rw-r--r-- 1 user user    0 2010-12-20 21:48 2
lrwxrwxrwx 1 user user    1 2010-12-20 21:48 3 -> 1
lrwxrwxrwx 1 user user    2 2010-12-20 21:48 3s -> 1/
lrwxrwxrwx 1 user user    1 2010-12-20 21:48 4 -> 2
lrwxrwxrwx 1 user user    2 2010-12-20 21:48 4s -> 2/

En cuanto lsa mi edición anterior...

Puede haber diferencias, por ejemplo, en los enlaces simbólicos:

$ ls -l
total 0
$ mkdir 1
$ echo 1>1/a
$ find
.
./1
./1/a
$ ln -s 1 2
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 2010-12-19 13:17 1
lrwxrwxrwx 1 user user    1 2010-12-19 13:17 2 -> 1
$ ls -l 1
total 4
-rw-r--r-- 1 user user 1 2010-12-19 13:17 a
$ ls -l 2
lrwxrwxrwx 1 user user 1 2010-12-19 13:17 2 -> 1
$ ls -l 2/
total 4
-rw-r--r-- 1 user user 1 2010-12-19 13:17 a

Es mejor pensarlo así:

  • ls AlizaA
  • ls A/en realidad enumera A/., donde .hay un archivo especial que indica el directorio actual

Por lo tanto, para enlaces simbólicos ls Aenumera el enlace simbólico, mientras que ls A/== ls A/.enumera el contenido de la carpeta a la que apunta el enlace simbólico.

Para más detalles, echa un vistazo aquí:

sección 4.12 Resolución de nombre de ruta.

información relacionada