← Все вопросы

Чем абсолютный путь отличается от относительного в Linux?

Задан 21 месяц назад1.5к просмотров2 ответа
9

Постоянно встречаю абсолютные и относительные пути, и команды то работают, то выдают «No such file or directory». Не понимаю разницу между путём с / в начале и без него. Объясните на примере.

2 ответа

11
✓ Принятый ответ — помог автору

Путь — это «адрес» файла. Бывает двух видов, и в этом вся суть.

Абсолютный путь начинается с корня / и описывает полный адрес от самого верха файловой системы. Он работает из любой папки, потому что не зависит от того, где ты стоишь:

/home/user/projects/app/config.py

Куда бы ты ни перешёл, этот путь всегда укажет на тот же файл.

Относительный путь отсчитывается от текущей папки (от того, где ты сейчас, — проверь через pwd). Он не начинается со /:

config.py
projects/app/config.py

Если ты в /home/user, то относительный projects/app/config.py ведёт к тому же файлу, что абсолютный выше.

Специальные обозначения для относительных путей:

  • .текущая папка.
  • .. — папка на уровень выше (родительская).
  • ~ — домашняя папка (это, по сути, сокращение абсолютного пути вроде /home/user).

Например cd ../config = «поднимись на уровень выше и зайди в config».

Частая ошибка: относительный путь работает в одной папке и ломается «No such file or directory» в другой — потому что он считается от текущего места, а ты перешёл в другую папку. Если хочешь, чтобы путь работал везде одинаково (в скрипте, в cron) — используй абсолютный путь. Если важна переносимость внутри проекта — относительный.

4

Простая аналогия с адресом:

  • Абсолютный путь — это полный почтовый адрес: «город, улица, дом 5». Найдёшь откуда угодно.
  • Относительный путь — это «соседний дом справа». Понятно, только если знаешь, где стоишь сейчас.

Быстрый признак на глаз: путь начинается со / → абсолютный. Начинается с имени, ., .. или ~ → относительный (зависит от текущей папки).

Ваш ответ

Войдите, чтобы ответить на вопрос.