MacOS: Como “cd” em um symlink?

2

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?

    
por Ecir Hana 05.01.2012 / 21:54

2 respostas

4

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.

    
por 05.01.2012 / 21:57
1

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.

    
por 20.02.2018 / 03:35