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