CD.. на корневой папке

Существует приложение, названное libetc, который пытается заниматься этой проблемой:

Это - LD_PRELOAD-способная общая библиотека, которая прерывает операции файла: если программа пытается открыть dotfile в $HOME, она перенаправляется к $XDG_CONFIG_HOME (как определено freedesktop).

Можно затем сохранить все файлы конфигурации в $XDG_CONFIG_HOME вместо того, чтобы использовать огромное количество dotfiles в $HOME

Это не было обновлено в некоторое время и может вызвать непреднамеренные побочные эффекты, таким образом используйте с осторожностью. Существует страница на Дуге Wiki и пакет АУРА.

44
22.04.2014, 16:32
6 ответов
[1120651] Согласно Open Group (ответственной за стандарт POSIX):[12109]Каждая директория имеет ровно одну родительскую директорию, которая представлена именем [1121150]dot-dot[1121151] в первой директории. [...] То, к чему относится имя файла [1121152]dot-dot[1121153] относительно корневого каталога, определяется реализацией. В версии 7 оно ссылается на сам корневой каталог; такое поведение упоминается в POSIX.1-2008. В некоторых сетевых системах для обращения к корневому каталогу другого хоста используется конструкция [1121154]/.../hostname/[1121155], и POSIX.1 допускает такое поведение.[12110](Source)[12111]
53
27.01.2020, 19:34
[1120635] Вы не получите ошибку, потому что даже [1121011]/[1121012] директория на самом деле [1121013] имеет [1121014] действительный элемент директории для [1121015]...[1121016], но в отличие от других директорий она указывает на саму директорию и, таким образом, ведет себя идентично [1121017]. [1121018]:[12103] Как говорит первая колонка, [1121019], [1121020], [1121021]...[1121022] и [1121023]/[1121024] имеют один и тот же индекс и, таким образом, являются одними и теми же элементами файловой системы. Поэтому даже если вы [1121025]cd ...[1121026] внутри [1121027]/[1121028], вы просто остаетесь в [1121029]/[1121030].[1120640].
29
27.01.2020, 19:34
[1120691] Другой способ проверить, что же на самом деле [1121080]. [1121081] и [1121082]... [1121083] в [1121084]/[1121085]:[12127] Как видно, [1121086]...[1121087] и [1121088]...[1121089] указывается на [1121090]/[1121091].[1120694].
1
27.01.2020, 19:34
[112900] Другая причина '...' заключается в том, что если бы его там не было, это создало бы другой особый случай: корневой каталог имел бы на одну жесткую ссылку меньше, чем все остальные каталоги (все узлы каталога имеют n+2 ссылки, где n - количество подкаталогов внутри каталога). Это сломало бы различные программы, на которые опираются при оптимизации сканирования каталогов.[112901].
1
27.01.2020, 19:34

Хорошо, что он есть, потому что иначе я не смог бы спамить .../.../.../, чтобы добраться до корня из папки. Если бы он не разрешил ... в корне, то я бы застрял, подсчитывая количество папок вниз по рабочему каталогу.

0
27.01.2020, 19:34

Он существует потому, что его удаление потребовало бы создания специального кода для работы с кейсами в ядре и библиотеках Си. Прямо сейчас можно предположить, что в любом каталоге, куда вы перейдете, всегда будет символ '.' и '...'.

Единственный специальный код, который требуется сейчас, это код монтирования файловой системы, где код переопределяет кодовое значение '...' для указания на каталог, содержащий точку монтирования, так как корневые каталоги не всегда являются корневыми каталогами.

15
27.01.2020, 19:34

Теги

Похожие вопросы