/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
проходить через цей алгоритм; каталог, в який ви змінюєтеся, - це шлях, який алгоритм повертає.
Подальше читання: