Esto es simplemente una pregunta de vocabulario, pero que sigue dando vueltas en mi cabeza.
Proviene de un examen de práctica de un libro de preparación de LPIC . La respuesta correcta según el libro es que ~/Documents
es un directorio relativo porque es relativo al directorio de inicio.
Sin embargo, este libro contiene una proporción honorable de errores tipográficos y errores, por lo que no puedo dar por sentado todo lo que está escrito allí. Aquí no estoy de acuerdo porque para mí ~
actúa como una variable expandida por el shell en el contenido de la $HOME
variable o en la ruta del directorio de inicio del usuario actual (cf. man bash
), por lo que la ruta real /home/myuser/Documents
es, de hecho, un directorio absoluto.
Incluso Wikipedia , por una vez, no me parece de ninguna ayuda sobre este tema (incluso si parece confirmar que el libro está equivocado sobre este tema):
Una ruta absoluta o completa apunta a la misma ubicación en un sistema de archivos, independientemente del directorio de trabajo actual. Para hacer eso, debe contener el directorio raíz.
Por el contrario, una ruta relativa comienza desde un directorio de trabajo dado, evitando la necesidad de proporcionar la ruta absoluta completa.
Una vez más, no estoy de acuerdo: de acuerdo con esta definición, la ruta /opt/kde3/bin/../lib
que no depende del directorio de trabajo actual debería ser absoluta, sin embargo, mi comprensión actual de esto coincide con el autor del libro haciendo que esta ruta sea relativa.
Una búsqueda rápida en la web solo está agregando a mi frustración, según el Diccionario Webster :
ruta absoluta : una ruta relativa al directorio raíz. Su primer carácter debe ser el separador de nombre de ruta.
Entonces $HOME/Documents
, ¿ o incluso $HOME
no se considerarían directorios absolutos? ¿O esta definición implica expansión variable? ¿Qué pasa con el ~
personaje de la concha ? ¿Hay alguna definición confiable de directorio relativo versus absoluto que pueda encontrar en algún lugar y me equivoco completamente?
~/foo
un camino relativo. Lo que está llegando es la diferencia entre codificación rígida y parametrización. Vea mi respuesta para más detalles.
~/Documents
y $HOME/Documents
no son caminos. Identifican rutas (absolutas) después de la expansión, pero no son rutas en sí mismas. Creo que eso está de acuerdo con la cantidad de usuarios de Unix / Linux que usan el término, pero sin duda esas cadenas también se denominan rutas.
/
y las que llamamos absolutas. Por tanto, todo lo que se inicia desde/
que yo llamaría absoluta (aunque esto es/usr/../etc
) y todo lo demás que llamarían relativa (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). El punto es que absoluto debería funcionar independientemente del directorio de trabajo actual o del usuario actual. El pariente solo puede funcionar en algunos casos específicos.