Esta é apenas uma questão de vocabulário, mas que continua girando na minha cabeça.
Vem de um exame prático de um livro de preparação do LPIC . A resposta correta de acordo com o livro é que ~/Documents
é um diretório relativo, porque é relativo ao diretório inicial.
No entanto, este livro contém uma proporção honrosa de erros de digitação e, portanto, não posso tomar como certo tudo o que está escrito lá. Não concordo aqui porque, para mim, ~
atua como uma variável expandida pelo shell no conteúdo da $HOME
variável ou no caminho do diretório inicial do usuário atual (cf. man bash
); portanto, o caminho real /home/myuser/Documents
é realmente um diretório absoluto.
Até a Wikipedia , por uma vez, não me ajuda em nada sobre esse assunto (mesmo que pareça confirmar que o livro está errado nesse assunto):
Um caminho absoluto ou completo aponta para o mesmo local em um sistema de arquivos, independentemente do diretório de trabalho atual. Para fazer isso, ele deve conter o diretório raiz.
Por outro lado, um caminho relativo inicia em um determinado diretório de trabalho, evitando a necessidade de fornecer o caminho absoluto completo.
Aqui, novamente, eu não concordo: de acordo com essa definição, o caminho /opt/kde3/bin/../lib
que não depende do diretório de trabalho atual deve ser absoluto, mas meu entendimento atual disso coincide com o autor do livro, tornando esse caminho relativo.
Uma rápida pesquisa na web está apenas aumentando minha frustração, de acordo com o Webster Dictionary :
caminho absoluto - Um caminho relativo ao diretório raiz. Seu primeiro caractere deve ser o separador do nome do caminho.
Então $HOME/Documents
, ou simplesmente $HOME
não seriam considerados diretórios absolutos? Ou essa definição implica expansão variável? E o ~
personagem do shell ? Existe alguma definição confiável de diretório relativo x absoluto que eu possa encontrar em algum lugar e eu estou errado o tempo todo?
~/foo
um caminho relativo. O que você está percebendo é a diferença entre codificação e parametrização. Veja minha resposta para mais detalhes.
~/Documents
e $HOME/Documents
não são caminhos. Eles identificam caminhos (absolutos) após a expansão, mas não são eles mesmos. Eu acho que concorda com quantos usuários Unix / Linux usam o termo, mas sem dúvida essas strings também são chamadas de caminhos.
/
e aqueles que chamamos de absolutos. Assim, tudo o que começa a partir de/
eu chamaria absoluto (mesmo que seja/usr/../etc
) e tudo o que eu chamaria relativa (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). O ponto é que o absoluto deve funcionar independentemente do diretório de trabalho atual ou do usuário atual. O parente pode funcionar apenas em alguns casos estreitos específicos.