Como eu converto um parente em um caminho absoluto, portável e robusto?

0

Suponha que eu esteja executando o bash em um sistema Unix-ish - não necessariamente Linux e não necessariamente muito novo; e pode não ter todo o software que eu gostaria.

Agora, tenho um caminho relativo para o qual desejo obter o caminho absoluto. Qual é a maneira mais robusta e portátil de fazer isso?

As respostas aqui parecem na maioria das vezes assumir os principais utilitários GNU estão instalados, o que eu prefiro não fazer.

Pontos de bônus se sua resposta funcionar em qualquer variante do Bourne Shell.

    
por einpoklum 20.06.2017 / 16:02

3 respostas

2

Não tenho certeza se a variável de ambiente $PWD foi definida no shell bourne, mas a o comando pwd existe desde o antigo minix e é parte do POSIX , portanto :

abs_path="$(cd "$rel_path" && pwd -P)"
    
por 20.06.2017 / 20:19
0

O que eu faço agora é

absolute_path="$(cd "$relative_path"; echo "$PWD")"

Gostaria de saber se a Bourne Shell tinha $PWD .

    
por 20.06.2017 / 16:06
0

Você pode usar o módulo Cwd core do Perl. Este módulo fornece funções para determinar o nome do caminho do diretório de trabalho atual.

perl -MCwd -le 'print Cwd::realpath("foo")'

O Perl geralmente já está instalado no Linux e no Unix. Este módulo faz parte do núcleo Perl-5 desde 1994.

    
por 20.06.2017 / 16:28