/Users/lukas
это «абсолютный» путь. Ведущий /
представляет корневой каталог вашей файловой системы.
lukas
это «относительный» путь. Поскольку он не привязан к корню, это означает «искать это в текущем каталоге». Если текущим каталогом не является /Users
(или не является каким-либо другим каталогом, содержащим lukas
в нем), это не удастся.
Итак, давайте рассмотрим ваши примеры, предполагая, что вы находитесь в /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Относительный путь указан => перейти в каталог «Документы», который находится внутри /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Указан абсолютный путь => изменить каталог /Documents
.
$ pwd
/
Это показывает, что вы изменили рабочий каталог на корневой каталог /
(хотя cd
команда для этого не была показана).
$ cd Users
/Users
Относительный путь указан => изменить каталог «Пользователи», который находится внутри /
.
$ cd /Users
/Users
Указан абсолютный путь => изменить каталог /Users
.
Ключ каждый раз, что ведущий /
. С ним путь абсолютен. Без этого путь относительный. Это правило однозначно, потому что все абсолютные пути начинаются с /
(потому что корневой каталог всегда вызывается /
).
Вот некоторый псевдокод, свободно описывающий этот алгоритм:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
Аргумент, который вы передаете, cd
проходит через этот алгоритм; каталог, в который вы в конечном итоге меняете, - это путь, который возвращает алгоритм.
Дальнейшее чтение: