Это всего лишь словарный вопрос, но он постоянно крутится в моей голове.
Это происходит из практического экзамена из книги подготовки LPIC . Правильный ответ в соответствии с книгой - ~/Documents
это относительный каталог, потому что он относительно домашнего каталога.
Тем не менее, эта книга содержит достойное соотношение опечаток и ошибок, поэтому я не могу принимать как должное все, что там написано. Здесь я не согласен, потому что для меня ~
действует как переменная, расширенная оболочкой либо в содержимое $HOME
переменной, либо в путь к текущему домашнему каталогу пользователя (см. man bash
), Поэтому фактический путь - /home/myuser/Documents
это действительно абсолютный каталог.
Даже Википедия , на этот раз, кажется, не помогает мне в этой теме (даже если кажется, что она подтверждает, что эта книга ошибочна):
Абсолютный или полный путь указывает на одно и то же место в файловой системе независимо от текущего рабочего каталога. Для этого он должен содержать корневой каталог.
Напротив, относительный путь начинается с некоторого заданного рабочего каталога, избегая необходимости указывать полный абсолютный путь.
Здесь я снова не согласен: согласно этому определению путь, /opt/kde3/bin/../lib
который не зависит от текущего рабочего каталога, должен быть абсолютным, однако мое нынешнее понимание этого соответствует автору книги, делающему этот путь относительным.
По словам словаря Вебстера, быстрый поиск в Интернете только добавляет мне разочарования :
абсолютный путь - путь относительно корневого каталога. Его первый символ должен быть разделителем пути.
Так $HOME/Documents
или даже просто $HOME
не будет считаться абсолютными каталогами? Или это определение подразумевает расширение переменной? А как насчет ~
персонажа оболочки ? Есть ли какое-нибудь надежное определение относительного или абсолютного каталога, который я могу найти где-нибудь, и я ошибаюсь полностью?
~/foo
относительный путь. То, что вы получаете, это разница между жестким кодированием и параметризацией. Смотрите мой ответ для более подробной информации.
~/Documents
и $HOME/Documents
не являются путями. Они идентифицируют (абсолютные) пути после расширения, но сами они не являются путями. Я думаю, что это согласуется с тем, как много пользователей Unix / Linux используют этот термин, но, без сомнения, эти строки также называются путями.
/
, и те, которые мы называем абсолютными. Таким образом , все , что начинается от/
я бы назвал абсолютным (даже если это/usr/../etc
) , и все остальное , я бы назвал относительными (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). Дело в том, что абсолют должен работать независимо от текущего рабочего каталога или текущего пользователя. Относительный может работать только в некоторых конкретных узких случаях.