Работало у меня на CentOS 6. X
sudo rpm -e epel-release-7-5.noarch
wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -ivh epel-release-6-8.noarch.rpm
sudo yum clean all
sudo rpmdb -v --rebuilddb
sudo yum -y install libselinux-python
Использование слова «имя» немного гибко; оно может относиться к «полностью определенному имени пути»; оно может относиться к «записи каталога»; оно может относиться к «имени файла», переданному различным функции или подпрограммы.
Так, например, / etc / foo
и / var / tmp /../../ etc / foo
и / tmp / ../../../../../ ../ foo
- все способы обращения к одному и тому же файлу; все они действительны имен , как и foo
в каталоге / etc
.
Итак, вернемся к основам.
Имя файла в unix состоит из компонентов , разделенных разделителем каталогов /
.Практически единственным ограничением для компонентов является то, что они не могут содержать символы /
или NUL; все остальное разрешено.
Таким образом, «полное имя пути» / etc
- это полная строка: / etc
. Это означает, что в корневом каталоге есть компонент и т. Д.
.
Аналогично / x / y / z / foo
будет иметь компонент foo
в каталоге / x / y / z
.
Теперь корневой каталог уникален тем, что не имеет компонентов в родительском каталоге; он только имеет полный путь в качестве имени: /
.
косая черта - это разделитель ; имена каталогов не включают разделители, но полные имена путей включают разделители.
Итак, "корневой уровень" /
не имеет имени . В большинстве Unix-подобных систем это рассматривается как особый случай, например .
и ..
(хотя, конечно, на корневом уровне между ними нет никакой разницы).
Номенклатура может отличаться. POSIX.1-2017, например, перечислены некоторые часто используемые определения :
Имя пути, начинающееся с одного или более двух
<косая черта>
символов; см. также Путь .
Строка, которая используется для идентификации файла. В контексте POSIX.1-2008 имя пути может быть ограничено байтами {PATH_MAX}, включая завершающий нулевой байт. Он имеет необязательное начало
<косая черта>
символов, за которым следует ноль или более имен файлов, разделенных символами<косая черта>
. Имя пути может дополнительно содержать один или несколько завершающих символов<косая черта>
. Несколько следующих друг за другом символов<косая черта>
считаются такими же, как один<косая черта>
, за исключением случая с двумя ведущими символами<косая черта>
.
Примечание: Если путь состоит только из байтов, соответствующих символам из переносимого набора символов имени файла (см. Переносимый набор символов имени файла ),<косая черта>
символов и одного завершающегосимвол, имя пути будет использоваться как строка символов во всех поддерживаемых регионах; в противном случае имя пути может быть только строкой (а не строкой символов). Кроме того, поскольку однобайтовая кодировка символа
<косая черта>
должна быть одинаковой для всех языков и не встречаться в многобайтовом символе, ссылки на<косая черта>
в имени пути четко определены, даже если имя пути не является строкой символов.Однако это свойство не обязательно сохраняется для остальных символов в переносимом наборе символов имени файла.
См. Имя файла в Имя файла .
Последовательность байтов, состоящая от 1 до
{NAME_MAX}
байтов, используемая для имени файла. Байты, составляющие имя, не должны содержать символовили
. В контексте имени пути каждое имя файла должно сопровождаться символом
<косая черта>
или; в другом месте имя файла, за которым следует символ
, образует строку (но не обязательно строку символов). Имена файлов точка и
точка-точка
имеют особое значение. Имя файла иногда называют «компонентом имени пути». См. Также Путь .
Итак ... если вы ищете разъяснений , возможно, это не ваша первая остановка. Учебники, такие как эта страница UNIX Concepts , полезны, например, указывая, что «полный путь» является синонимом «абсолютного» пути ».
Стандарт POSIX.1-2008 гласит:
Путь, состоящий из одного
/
, должен разрешаться в корневой каталог процесс. Нулевое имя пути не может быть успешно разрешено .
Стандарт также проводит различие между именами файлов и именами путей . /
- это путь к корневому каталогу. Имя каталога - «корневой каталог», но в файловой системе он безымянный, у него нет имени файла. Если бы у него было имя файла, это имя было бы записью каталога в каталоге над корневым каталогом, а такого каталога нет.
Символ /
никогда не может быть частью имени файла, поскольку он является разделителем пути.
Для ясности: /
- это не имя корневого каталога, а путь к нему, его путь .
/ etc
- это еще один путь. Это имя абсолютного пути к каталогу и т.д.
. Имя каталога по этому пути - и т. Д.
(его имя файла - и т. Д.
).
/ usr / local / bin / curl
- это путь к исполняемому файлу curl
, точно так же, как / etc
- это путь к и т. Д.
каталог.
В Unix у файлов (а каталоги - это просто файлы) нет "имен". Ссылки имеют имена, ссылки - это записи в каталоге, которые сопоставляют имена с файлами.
Вы можете сказать, что ссылки дают имена файлам, но обратите внимание: это подразумевает, что у файла может быть более одного имени, поскольку у него может быть более одной ссылки.
Поскольку корневой каталог - это, ну, корневой каталог, нет никакого "более высокого" каталога, в котором могла бы быть ссылка на него, поэтому у него не может быть имени, связанного с ним. Теоретически можно добавить ссылку на корневой каталог в какой-нибудь другой каталог, но большинство Unices запрещают добавлять ссылки в существующие каталоги, потому что это может привести к циклам в иерархии файловой системы (которая на самом деле является направленным графом), а обнаружение циклов в графе дорого, а их необнаружение может привести к бесконечной рекурсии при попытке разрешить имена в ядре.
Итак, по существу, корневой каталог не имеет имени, потому что над ним нет каталога, в котором мы могли бы записать имя.
Как было указано в других ответах, нам нужно различать имя и путь (имя). К корневому каталогу можно обратиться через путь (имя) /
.