¿Por qué cd ..
, escrito en la carpeta raíz, no advierte o falla con un error?
Yo esperaría:
/$ cd ..
-bash: cd: ..: No such file or directory
En cambio, me quedo en /
. Por supuesto, esto se debe a ..
que existe en /
, y es simplemente /
igual .
. Me pregunto por qué es así.
directory
cd-command
Llevar una vida de soltero
fuente
fuente
Respuestas:
Según el Grupo abierto (responsable del estándar POSIX):
(Fuente)
fuente
No obtiene un error porque incluso el
/
directorio tiene una entrada de directorio válida..
, pero a diferencia de otros directorios, apunta al directorio en sí y, por lo tanto, se comporta de manera idéntica a.
:Como la primera columna indica,
.
,..
, y/
todos tienen el mismo nodo-i-número y por lo tanto son las mismas entradas del sistema de archivos.Entonces, incluso si estás
cd ..
dentro de/
ti, solo quédate/
.fuente
..
está ahí la entrada del directorio./
como cualquier otra carpeta, incluida una entrada válida para..
. De lo contrario, tendría que tratar de manera/
diferente en comparación con todas las demás carpetas del sistema.Está ahí porque eliminarlo requeriría crear código de manejo de casos especiales en el núcleo y las bibliotecas C. En este momento puede asumir que siempre habrá un '.' y '..' en cualquier directorio al que vaya.
El único código de caso especial requerido en este momento está en el código de montaje del sistema de archivos, donde el código anula el valor de inodo de '...' para apuntar al directorio que contiene el punto de montaje, ya que los directorios raíz no siempre son directorios raíz.
fuente
mount
comando y su archivo especial asociado/etc/fstab
.Otra forma de verificar qué
.
y..
en/
realidad es:Como puede ver,
.
y..
se señala/
.fuente
Otra razón '...' está en / es que si no estuviera allí, crearía otro caso especial: el directorio raíz tendría un enlace duro menos que todos los demás directorios (todos los nodos del directorio tienen n + 2 enlaces, donde n es el número de subdirectorios directos dentro). Esto rompería varios programas que dependen para optimizar los análisis de directorios.
fuente
Es bueno que esté allí, porque de lo contrario no podría enviar spam
../../../../
a la raíz desde una carpeta. Si no permitiera..
en la raíz, entonces estaría atascado contando el número de carpetas en el directorio de trabajo.fuente
cd /
?../
es mejor usarlo . También hago muchas operaciones de archivos en PHP, donde no puedo hacerlo/
por varias razones.../
sy operas (o eliminas) un archivo que no intentaste sin error.../
más veces de lo necesario y desear que funcione según lo previsto me parece un error lógico (inactivo), incluso si el sistema de archivos aparentemente lo permite.