/Users/lukas
- это "абсолютный" путь. Ведущий /
представляет корневой каталог вашей файловой системы.
lukas
- это "относительный" путь. Поскольку он не привязан к корню, это означает «искать это в текущем каталоге». Если текущим каталогом не является /Users
(или какой-либо другой каталог с lukas
в нем), это не удастся.
Итак, давайте рассмотрим ваши примеры, предполагая, что вы находитесь в /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Относительный путь указан => перейти в каталог "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
проходит через этот алгоритм; каталог, в который вы в конечном итоге меняете, - это путь, который возвращает алгоритм.
Дальнейшее чтение: