links simbólicos do Linux para diretórios

0

Eu criei um link simbólico na minha pasta pessoal para outro diretório:

$ pwd
/home/user1
$ ln -s /usr/local/dir/ shortcut
$ ls -l
................................... shortcut -> /usr/local/dir/
$ cd shortcut
$ pwd
/home/user1/shortcut

Eu termino nesse diretório para ver todos os arquivos, mas o pwd é confuso e pode causar problemas. Existe uma maneira melhor para isso para que ele atue um atalho e realmente mostre /usr/local/dir quando eu entrar em cd shortcut em vez de mostrar o novo caminho?

    
por prl77 11.01.2017 / 02:03

2 respostas

1

Tanto cd como pwd têm sinalizadores para usar a estrutura de diretórios físicos.

cd

$ cd --help
...
  -P   use the physical directory structure without following
       symbolic links: resolve symbolic links in DIR before
       processing instances of '..'
...

, por exemplo

$ cd /var/tmp 
$ ln -s /home/user test 
$ cd -P test
$ pwd
/home/user

Acima, usamos cd -P para usar a estrutura de diretórios físicos, portanto, agora pwd nos fornece o caminho físico.

pwd

$ pwd
...
  -P    print the physical directory, without any symbolic links
...

por exemplo

$ cd /var/tmp
$ ln -s /home/user test 
$ cd test
$ pwd
/var/tmp/test
$ pwd -P
/home/user

Acima, nós cd 'd no diretório como normal, então pwd fornece o caminho simbólico. Usar pwd -P fornecerá o caminho físico.

Definir globalmente no bash

Se você estiver usando bash , você pode dizer para ignorar completamente os links simbólicos e apenas usar a estrutura de diretórios físicos executando set -P (abreviação de set -o physical , consulte a 'página man bash). Isso provavelmente é possível com outras camadas também.

    
por 12.01.2017 / 18:24
0

Use $ CDPATH

$ CDPATH=/usr/local
$ cd dir
$ pwd
/usr/local/dir
    
por 11.01.2017 / 02:11