Normalmente, quando você se depara com isso, seu alvo é inválido. ou seja, o abc não existe. Sim, você pode criar links simbólicos para coisas que não existem.
Eu tenho uma pasta "abc". Eu crio um symlink: ln -s abc abclink
. mas, quando eu digito, cd abclink
diz "Nenhum arquivo ou diretório".
Eu posso ver o link, ele tem permissões "lrwxr-xr-x", por que não funciona? Como fazer isso funcionar?
Eu tive um caso de uso confuso que acabou sendo o mesmo que a resposta aceita - o diretório de destino não existia - mas com um toque extra.
Eu estava criando um link simbólico para um diretório definido em uma variável de ambiente que chamaremos de FOO
:
$ FOO="~/project"
$ ln -s foo "$FOO"
Isso pareceu funcionar bem:
$ ls -al
lrwxr-xr-x 1 jondoe jondoe 10 Feb 20 02:25 foo -> ~/project
No entanto, quando eu tento entrar na pasta foo
, recebo um erro:
$ cd foo
-bash: cd: foo: No such file or directory
Isso foi estranho, porque acabamos de ver que foo
definitivamente existe. Além disso, o mesmo acontece com ~/project
:
$ cd ~/project
$ ls -al
drwxr-xr-x 3 jondoe jondoe 102 Feb 20 02:26 .
drwxr-xr-x 4 jondoe jondoe 136 Feb 20 02:25 ..
-rw-r--r-- 1 jondoe jondoe 0 Feb 20 02:26 README.md
Como o symlink e a pasta que está apontando para ambos existem, mas eu não posso realmente usar o symlink?
A causa é que a variável de ambiente FOO
tinha um til ~
nela.
Desde que eu coloquei essa variável entre aspas ao criar o symlink, o til não passou pela expansão bash, e então o link simbólico resultante apontando para o caminho literal ~/project
ao invés de uma pasta project
no meu diretório home.
Tags symbolic-link mac