Diretório atual real [duplicado]

3

Obviamente eu sei sobre pwd e readlink , mas existe um comando para descobrir o caminho absoluto real para o diretório atual (ou seja, resolvendo links e pontos)?

    
por Sheljohn 27.05.2016 / 15:45

3 respostas

4
pwd -P

(em qualquer shell POSIX), é o comando que você está procurando.

-P é para físico (em oposição a lógico ( -L , o padrão) onde pwd despeja principalmente o conteúdo de $PWD (que o shell mantém baseado nos argumentos que você dá para cd ou pushd )).

$ ln -s . /tmp/here
$ cd /tmp/here/here
$ cd ../here/here
$ pwd
/tmp/here/here/here
$ pwd -P
/tmp
    
por 27.05.2016 / 15:55
1

Use

$ env pwd

Ou

$ /bin/pwd

A menos que a variável POSIXLY_CORRECT esteja definida, neste caso você precisa adicionar -P .

Os detalhes:

O shell tem um builtin chamado pwd , cujo padrão é imprimir o valor de $PWD do shell. Ao fazer isso, pode incluir caminhos lógicos (o padrão -L ).

Se você chamar o criado com ( -P ) ou usar o% externo% co_de:

$ ln -s . /tmp/here; cd /tmp/here/here/here

$ pwd
/tmp/here/here/here

$ pwd -P
/tmp

$ /bin/pwd 
/tmp

O motivo é que a opção /bin/pwd externa é padronizada para a opção /bin/pwd .
De -P :

this implementation uses -P' as the default unless thePOSIXLY_CORRECT' environment variable is set.

    
por 28.05.2016 / 07:50
0

Usar o Python também funciona:

python -c "import os; print(os.path.realpath('.'))"
    
por 27.05.2016 / 15:56

Tags