/Users/lukases un camino "absoluto". El líder /representa el directorio raíz de su sistema de archivos.
lukases un camino "relativo". Como no está anclado a la raíz, significa "buscar esto en el directorio actual ". A menos que el directorio actual sea /Users(o algún otro directorio con un lukasen él), esto fallará.
Entonces, exploremos sus ejemplos, suponiendo que esté en /Users/lukas:
$ cd Documents/
/Users/lukas/Documents
Ruta relativa dada => cambiar al directorio "Documentos" que está dentro /Users/lukas.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Ruta absoluta dada => cambiar al directorio /Documents.
$ pwd
/
Esto muestra que ahora ha cambiado el directorio de trabajo al directorio raíz /(aunque cdno se mostró el comando para hacerlo).
$ cd Users
/Users
Ruta relativa dada => cambiar al directorio "Usuarios" que está dentro /.
$ cd /Users
/Users
Ruta absoluta dada => cambiar al directorio /Users.
La clave cada vez es ese liderazgo /. Con ella, el camino es absoluto. Sin ella, el camino es relativo. Esta regla no es ambigua porque todas las rutas absolutas comienzan con /(porque siempre se llama al directorio raíz /).
Aquí hay un pseudocódigo que describe libremente ese algoritmo:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
El argumento al que pasa cdpasa por este algoritmo; el directorio al que termina cambiando es la ruta que devuelve el algoritmo.
Otras lecturas: