Почему cd ..
, набранный в корневой папке, не предупреждает или выдает ошибку?
Я бы ожидал:
/$ cd ..
-bash: cd: ..: No such file or directory
Вместо этого я остался в /
. Конечно, это так ..
как существует /
, и просто /
, просто так .
. Мне просто интересно, почему это так.
directory
cd-command
холостяк
источник
источник
Ответы:
Согласно Open Group (отвечает за стандарт POSIX):
(Источник)
источник
Вы не получите сообщение об ошибке, потому что даже
/
каталог действительно имеет допустимую запись каталога..
, но в отличие от других каталогов он указывает на сам каталог и, следовательно, ведет себя идентично.
:Поскольку первый столбец говорит вам,
.
,..
и/
все они имеют один и тот же индексный дескриптор-номер и , таким образом , одни и те же элементы файловой системы.Так что даже если вы
cd ..
внутри/
себя, просто оставайтесь внутри/
.источник
..
каталоге есть запись./
любой другой папкой, включая допустимую запись для..
. В противном случае вам придется обращаться по-/
разному по сравнению со всеми другими папками в системе.Это происходит потому, что удаление этого потребует создания специального кода для обработки в ядре и библиотеках Си. Прямо сейчас вы можете предположить, что всегда будет «.» и ".." в любом каталоге, в который вы идете.
Единственный код специального случая, требуемый сейчас, находится в коде монтирования файловой системы, где код переопределяет значение inode '..', чтобы указать каталог, содержащий точку монтирования, поскольку корневые каталоги не всегда являются корневыми каталогами.
источник
mount
команду и связанный с ней специальный файл/etc/fstab
.Еще один способ проверить, что
.
и..
на/
самом деле:Как видите, так
.
и..
указано/
.источник
Еще одна причина, по которой «..» находится в /, заключается в том, что если бы его там не было, это создало бы другой особый случай: корневой каталог имел бы на одну жесткую ссылку меньше, чем все другие каталоги (все узлы каталога имеют n + 2 ссылки, где n - это количество прямых подкаталогов внутри). Это сломало бы различные программы, которые используются для оптимизации сканирования каталогов.
источник
Хорошо, что он там есть, потому что иначе я бы не смог спамить,
../../../../
чтобы попасть в корень из папки. Если бы он не позволял..
в корне, то я бы застрял, считая количество папок в рабочем каталоге.источник
cd /
?../
лучше. Я также делаю много файловых операций в PHP, где я не могу сделать это/
по нескольким причинам.../
s и оперировали (или удалили) файл, который вы не собирались без ошибок.../
большего количества раз, чем необходимо, и желание работать так, как задумано, для меня выглядит как (неактивная) логическая ошибка, даже если файловая система, по-видимому, это допускает.