Путь можно записать от корня системы или от текущего каталога. По первому символу пути видно, какой из двух перед тобой.
Все файлы и каталоги в Linux образуют одно дерево. Его начало — корень, каталог /. В корне лежат home, etc и другие каталоги, в home — домашние каталоги пользователей, и так далее вглубь. Путь перечисляет каталоги по дороге к файлу через /.
Абсолютный путь начинается с / и отсчитывается от корня. /home/student/path-lab/project/config/site.conf ведёт к одному и тому же файлу, в каком бы каталоге ты ни был.
Относительный путь начинается с имени и отсчитывается от текущего каталога. Из ~/path-lab/project путь config/site.conf ведёт к файлу коллеги. Из ~/path-lab он ведёт в ~/path-lab/config, а такого каталога нет.
| Путь | Отсчитывается от |
|---|---|
абсолютный, /home/student/path-lab |
корня / |
относительный, project/config |
текущего каталога |
~ в начале пути оболочка заменяет домашним каталогом: ~/path-lab — то же самое, что /home/student/path-lab.
В инструкции сказано открыть etc/nginx/nginx.conf. Ты в /home/student. Что будет?
-
cd ~ведёт в/home/student, где ты и так находишься. Путь сработал бы из корня, послеcd /. -
Оболочка идёт по пути от текущего каталога и ничего не ищет. Искать по имени умеет
find, о нём — шаг о поиске. -
Без
/в начале путь отсчитывается от текущего каталога, и файл ищется в/home/student/etc/nginx. От корня ведёт/etc/nginx/nginx.conf.
etc/nginx/nginx.conf — относительный путь: он начинается с имени и отсчитывается от /home/student, где каталога etc нет. Нужен абсолютный /etc/nginx/nginx.conf — он работает из любого каталога.
Главное в шаге
-
Абсолютный путь начинается с
/и ведёт в одно место из любого каталога. - Относительный путь отсчитывается от текущего каталога и меняет смысл вместе с ним.