Pourquoi cd ..
, tapé au dossier racine, ne prévient pas ou échoue avec une erreur?
Je m'attendrais à:
/$ cd ..
-bash: cd: ..: No such file or directory
Au lieu de cela, je suis parti à /
. Bien sûr, c'est depuis ..
qu'il existe /
, et est simplement /
, tout comme .
. Je me demande juste pourquoi c'est comme ça.
directory
cd-command
Bach
la source
la source
Réponses:
Selon Open Group (responsable du standard POSIX):
(La source)
la source
Vous n'obtenez pas d'erreur, car même le
/
répertoire a une entrée de répertoire valide pour..
, mais contrairement à d'autres répertoires, il pointe sur le répertoire lui-même et se comporte donc comme suit.
:Comme la première colonne indique,
.
,..
et/
tous ont le même inode numéro et sont donc les mêmes entrées du système de fichiers.Donc, même si vous restez à l’
cd ..
intérieur de/
vous/
.la source
..
entrée de répertoire est là./
comme tout autre dossier, y compris une entrée valide pour..
. Sinon, vous devrez traiter/
différemment de tous les autres dossiers du système.C'est là parce que le supprimer nécessiterait la création d'un code de traitement spécial dans le noyau et les bibliothèques C. À l'heure actuelle, vous pouvez supposer qu'il y aura toujours un "." et '..' dans n'importe quel répertoire où vous allez.
Le seul code spécial requis actuellement est le code de montage du système de fichiers, où le code remplace la valeur d'inode de '..' pour pointer vers le répertoire contenant le point de montage, car les répertoires racine ne sont pas toujours.
la source
mount
commande et à son fichier spécial associé/etc/fstab
.Une autre façon de vérifier quoi
.
et..
en/
est vraiment:Comme vous pouvez le voir,
.
et..
est pointé/
.la source
Une autre raison ".." est dans / est que s'il n'y était pas, cela créerait un autre cas particulier: le répertoire racine aurait un lien dur de moins que tous les autres répertoires (tous les nœuds de répertoire ont n + 2 liens, où n est le nombre de sous-répertoires directs à l'intérieur). Cela casserait divers programmes qui reposent sur pour l'optimisation des analyses de répertoires.
la source
C'est bien que ce soit là, car sinon, je ne pourrais pas
../../../../
envoyer de courrier indésirable à la racine depuis un dossier. S'il n'autorisait pas..
la racine, je serais bloqué en comptant le nombre de dossiers dans le répertoire de travail.la source
cd /
?../
vaut mieux utiliser . Je fais aussi beaucoup d'opérations sur les fichiers en PHP, ce que je ne peux pas faire/
pour plusieurs raisons.../
s et opérez sur (ou supprimez) un fichier que vous n'aviez pas l'intention de faire sans erreur.../
plus de fois que nécessaire et souhaiter que cela fonctionne comme prévu ressemble à une erreur de logique (en sommeil), même si le système de fichiers le permet apparemment.