====== Разница между абсолютным и относительным путем ====== ---- В Linux файлы и каталоги расположены в иерархической структуре, которая начинается с корневого каталога **/**. При работе с объектами файловой системы их местоположение можно указывать двумя способами: с помощью абсолютного или относительного пути. ===== Что такое абсолютный путь ===== Абсолютный путь указывает полное расположение файла или каталога, начиная с корневого каталога **/**. Он всегда начинается со знака / и не зависит от того, где пользователь находится в данный момент в файловой системе. Благодаря этому абсолютные пути считаются наиболее надежным способом указания местоположения объектов: * Независимо от текущего рабочего каталога, абсолютный путь всегда указывает на один и тот же ресурс. Например, **/etc/passwd** ссылается на один и тот же файл, будь Вы в папке **/home/kirill** или в **/var/log**. * Так как абсолютные пути не зависят от местоположения пользователя, они широко применяются в конфигурационных файлах, системных службах и скриптах, запускаемых автоматически. * Доступ ко многим важным файлам Linux (например, **/etc/hosts** или **/var/log/syslog**) осуществляется именно через абсолютные пути - это гарантирует корректность работы команд в непредсказуемых средах. Предположим, мы находимся в домашнем каталоге пользователя **/home/kirill**. Нам нужно просмотреть содержимое системного файла **passwd**, который находится в каталоге **/etc**. Поскольку файл находится в другой части файловой системы, удобнее использовать абсолютный путь к нему: nano /etc/passwd Вывод в терминале: {{ :linux:the-difference-between-the-absolute-and-relative_path-screan-01.jpg |}} Аналогично, абсолютные пути применяются для перемещения файла из одного каталога в другой. Например: mv /home/kirill/file.txt /etc Абсолютные пути особенно часто используются, когда нужно перейти в каталог, находящийся в другой части файловой системы, вне зависимости от текущего рабочего каталога. Допустим, мы находимся в домашнем каталоге пользователя **/home/kirill**, но хотим перейти в системный каталог **/etc**. Поскольку **/etc** находится в другой ветке файловой системы, следует использовать абсолютный путь: cd /etc Вывод в терминале: kirill@NEO-M136:~$ cd /etc kirill@NEO-M136:/etc$ ===== Что такое относительный путь ===== Относительный путь указывает расположение файла или каталога относительно текущего рабочего каталога. В отличие от абсолютного, он не начинается с **/** и зависит от того, где вы находитесь в данный момент. Ключевые особенности относительных путей: * Путь строится от текущего каталога. Например, **Документы/report.txt** будет означать разные файлы, если Вы находитесь в **/home/kirill** или **/var/log**. * Нет необходимости указывать полный путь от корня, если Вы уже находитесь в нужной ветке каталогов. * Особенно удобен для проектов и скриптов, которые расположены внутри одной структуры каталогов. Допустим, в текущем каталоге есть папка **Видео**. Чтобы в нее перейти, не обязательно писать абсолютный путь - можно воспользоваться относительным: cd Видео Вывод в терминале: {{ :linux:the-difference-between-the-absolute-and-relative_path-screan-02.jpg |}} В текущем рабочем каталоге есть каталог Документы, а в нем - файл file3.txt. Поскольку этот документ находится в той же ветке файловой системы, что и текущий каталог, можно использовать относительный путь для доступа к нему: cat Документы/file3.txt Вывод в терминале: {{ :linux:the-difference-between-the-absolute-and-relative_path-screan-03.jpg |}} Однако, если файл или каталог расположены в разных директориях, не связанных между собой, использовать относительный путь нельзя. Иначе команда может обратиться к другому объекту файловой системы или вызвать ошибку. Например, если мы находимся в домашнем каталоге **/home/kirill** и хотим перейти в системный каталог **etc**, попробуем применить относительный путь: cd etc Вывод в терминале: bash: cd: etc: Нет такого файла или каталога Как видите, команда выдаёт ошибку, так как прямого доступа к каталогу **/etc** из текущей директории нет.