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 $HOMEvariá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/../libque 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 $HOMEnã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?
~/fooum caminho relativo. O que você está percebendo é a diferença entre codificação e parametrização. Veja minha resposta para mais detalhes.
~/Documentse $HOME/Documentsnã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.