Este es el comportamiento estándar de Unix.
El /
al comienzo de la ruta representa la raíz del disco (o el nivel inicial/superior del árbol del sistema de archivos). Como Documents
no está fuera de la raíz, /Documents
no se puede encontrar.
/Users
está fuera del directorio raíz, por lo que este problema no ocurre.
Podrías usar cd /Users/lukas/Documents
para cambiar a ese camino.
Alternativamente, podría usar direccionamiento relativo. Los sistemas de archivos basados en Unix tienen 2 directorios especiales:
.
que significa "este directorio",..
lo que significa el directorio principal.
Si estás en /Users/lukas
, cd ./Documents
te llevaría al lugar correcto.
Supongamos que estabas en /Users/Lukas/Documents
y quería ir a /Users/Janes/Documents
, podría emitir un comando cd ../../Janes/Documents
- usando ..
te haría retroceder un nivel, por lo que lo harías dos veces, antes de ir a la nueva ruta relativa.
/Users/lukas
es un camino "absoluto". El /
principal representa el directorio raíz de su sistema de archivos.
lukas
es un camino "relativo". Como no está anclado a la raíz, significa "buscar esto en el actual directorio". A menos que el directorio actual sea /Users
(o algún otro directorio con un lukas
en él), esto fallará.
Entonces, exploremos sus ejemplos, asumiendo que está en /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Ruta relativa dada => cambiar al directorio "Documentos" que está dentro de /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 el cd
no se mostró el comando para hacer esto).
$ cd Users
/Users
Ruta relativa dada => cambiar al directorio "Usuarios" que está dentro de /
.
$ cd /Users
/Users
Ruta absoluta dada => cambiar al directorio /Users
.
La clave cada vez es que lleva /
. Con él, el camino es absoluto. Sin ella, el camino es relativo. Esta regla no es ambigua porque todas las rutas absolutas comienzan con /
(porque el directorio raíz siempre se llama /
).
Aquí hay un pseudocódigo que describe vagamente ese algoritmo:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
El argumento que pasas a cd
pasa por este algoritmo; el directorio al que termina cambiando es la ruta que devuelve el algoritmo.
Lectura adicional:
- Tutorial de directorios y archivos Unix
José L. Zachary
"Introducción a la Programación Científica"