O que causa ln: //: é um diretório?

5

Ao vincular um diretório a raiz, recebo este erro:

$ ln -s ~/inbox/ /
$ ln: //: Is a directory

O Bash faz o preenchimento automático do caminho do diretório adicionando um /. Eu tentei escapar sem sucesso.

$ ln -s ~/inbox /

funciona embora. Por que isso acontece?

    
por Igorio 09.05.2012 / 19:51

2 respostas

4

Na resolução do nome do caminho , ter um / à direita é equivalente a um resultado final /. - em outras palavras, ~/inbox/ é equivalente a ~/inbox/. neste contexto. Portanto, o comando ln está tentando criar um link chamado . no diretório raiz (e, sem surpresa, com falha).

Zsh remove o / quando você pressiona Espaço depois de completar um diretório (a menos que seja configurado para não fazê-lo). Eu não sei se o bash pode ser feito para fazer isso.

    
por 10.05.2012 / 02:37
0

Isso é exatamente o que você correu?

Is a directory parece que seu sistema operacional está imprimindo o erro EISDIR , o que pode acontecer de duas formas:

Tentando substituir um link simbólico existente que aponta para um diretório.

$ cd $(mktemp -d)
$ mkdir dir
$ ln -s dir dir    # this creates dir/dir
$ ln -s dir dir    # this fails, because dir/dir already exists
ln: failed to create symbolic link 'dir/dir': File exists

Tentando criar um link físico para um diretório.

$ cd $(mktemp -d)
$ mkdir dir
$ ln dir dirlink
ln: 'dir': hard link not allowed for directory

Se é o que você estava executando, o que type ln ou alias ln imprime?

    
por 09.05.2012 / 22:49