É diferente com e sem -s
.
com -s
em:
ln -s path/to/file some/dir/link
path/to/file
está definido como o destino do link simbólico de some/dir/link
(ou some/dir/link/file
if link
era um diretório).
Um link simbólico é um tipo especial de arquivo que / contém / um caminho (pode ser qualquer array de bytes não-0, alguns sistemas até permitem uma string vazia) que é o alvo do symlink. ln
define o primeiro argumento.
Ao resolver o link (quando o link for usado mais tarde), o caminho path/to/file
será relativo ao diretório em que o link
está (hard-) vinculado ( some/dir
quando some/dir/link
é acessado através do seu caminho some/dir/link
).
Observe que o path/to/file
não precisa existir no momento em que o comando ln
é executado (ou nunca).
Em:
ln path/to/file some/dir/link
É semelhante a:
cp path/to/file some/dir/link
O path/to/file
é relativo ao diretório de trabalho atual do processo que está executando ln
.
Nada impede que você crie vários links (hard-) para um symlink. Por exemplo:
$ mkdir -p a b/c b/a
$ ln -s ../a b/L # b/L a symlink to "a"
$ ln b/L b/c/L
b/L
e b/c/L
são o mesmo arquivo: mesmo inode mas vinculado a dois diretórios diferentes. Ambos são links simbólicos com o destino ../a
. Mas quando b/L
é resolvido, isso aponta para ./a
enquanto quando b/c/L
, que aponta para ./b/a
.