Estoy en mi directorio de inicio en mi mac:
$ pwd
/Users/lukas
Cuando estoy cdcerca, no (y no puedo) iniciar el camino con /:
$ cd Documents/
/Users/lukas/Documents
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Excepto cuando estoy en /:
$ pwd
/
$ cd Users
/Users
$ cd /Users
/Users
¿Por qué puedo usar /en frente de la ruta cuando voy de un nivel /a otro /Userspero no en ningún nivel posterior? ¿Es esto específico de macOS o es este comportamiento estándar de Unix?
linux
command-line
mac
terminal
LukasKawerau
fuente
fuente

Respuestas:
Este es el comportamiento estándar de Unix.
El
/principio de la ruta representa la raíz del disco (o el nivel inicial / superior del árbol del sistema de archivos). ComoDocumentsno está fuera de la raíz,/Documentsno se puede encontrar./Usersestá fuera del directorio raíz, por lo que este problema no se produce.Podrías usar
cd /Users/lukas/Documentspara cambiar a ese camino.Alternativamente, podría usar el direccionamiento relativo. Los sistemas de archivos basados en Unix tienen 2 directorios especiales:
.que significa "este directorio",..lo que significa el directorio padre.Si estás dentro
/Users/lukas,cd ./Documentste llevaría al lugar correcto.Supongamos que estaba dentro
/Users/Lukas/Documentsy quería ir/Users/Janes/Documents, podría emitir un comandocd ../../Janes/Documents, el uso..lo llevaría de vuelta a un nivel, por lo que lo haría dos veces, antes de ingresar a la nueva ruta relativa.fuente
Users/lukas,cd Documentsllama a la ruta relativa ;cd /Users/Lukas/Documentsrequiere la ruta absoluta (que funcionaría en cualquier repertorio en el que se encuentre al llamar a este comando)./con `\`) ya que DOS lo tomó prestado (a través de un largo y complicado historial) de Unix./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 unlukasen él), esto fallará.Entonces, exploremos sus ejemplos, suponiendo que esté en
/Users/lukas:Ruta relativa dada => cambiar al directorio "Documentos" que está dentro
/Users/lukas.Ruta absoluta dada => cambiar al directorio
/Documents.Esto muestra que ahora ha cambiado el directorio de trabajo al directorio raíz
/(aunquecdno se mostró el comando para hacerlo).Ruta relativa dada => cambiar al directorio "Usuarios" que está dentro
/.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:
El argumento al que pasa
cdpasa por este algoritmo; el directorio al que termina cambiando es la ruta que devuelve el algoritmo.Otras lecturas:
Joseph L. Zachary
"Introducción a la programación científica"
fuente