Está trabalhando no diretório symlink idêntico a trabalhar diretamente no diretório? [duplicado]

0

No meu diretório home, tenho uma pasta chamada symlinks na qual todos os meus links simbolizam. Eu adicionei esta pasta ao meu CDPATH , para que eu possa fazer:

~$ cd FarAwayDirectory
~/symlinks/FarAwayDirectory$

Eu notei que, se eu pwd , obtenho:

~/symlinks/FarAwayDirectory - > A

em vez de:

.../.../.../FarAwayDirectory - > B

que é o que eu teria conseguido passar por cd consecutivas.

Então, minha pergunta é: Está funcionando no diretório A idêntico ao trabalho no diretório B ?

    
por Douglas James Bock 18.07.2018 / 21:24

3 respostas

0

Sim. Trabalhar no diretório A é o mesmo que trabalhar no diretório B.

Um link simbólico é um arquivo especial que aponta para outro arquivo. O ~/symlinks/FarAwayDirectory , na verdade, não possui dados próprios (exceto os metadados do sistema de arquivos básico). Em vez disso, ele literalmente aponta para o diretório para o qual você é um link simbólico.

Você pode testar isso criando um arquivo em ~/symlinks/FarAwayDirectory e confirmando que o arquivo existe no caminho completo para o diretório real.

    
por 18.07.2018 / 21:32
0

Sim, se você usar a versão de pwd que é interna em bash , obterá a saída A.

Mas tente invocar explicitamente uma versão binária autônoma de pwd :

$ /bin/pwd

Acho que você verá sua saída B.

Basicamente, isso ocorre porque bash lembra que você chegou ao diretório por meio de um link simbólico e, por padrão, apresenta o caminho para você na forma "lógica" (sua saída A). Se você quer que o caminho "físico" (sua saída B) seja apresentado em todos os casos como este, você pode usar set -P para fazê-lo.

Ou se você quiser fazer isso caso a caso, o comando bash do cd também suporta as opções '-L' e '-P'.

    
por 19.07.2018 / 07:28
0

Não há diretório A.

É um link simbólico, não é um diretório . O diretório de trabalho é o mesmo diretório único em ambos os casos. A única diferença está no valor da variável PWD , que por sua vez afeta o que alguns comandos reportam como o nome do diretório atual. O comando pwd embutido em vários shells, por exemplo, relatará o valor da variável PWD shell, a menos que seja instruído a ignorá-lo. O comando pwd externo (se solicitado a fazer isso com a opção -L ) verificará se o valor da variável de ambiente PWD que herdou e se faz check-out como um nome para o diretório atual também usa isso.

Leitura adicional

por 19.07.2018 / 14:46