Многие знают про:
🔴 автодополнение по TAB,
🔴
~ для домашнего каталога,🔴
cd - — переключение между текущей и предыдущей папками:$ cd -
/home/xoadmin/Documents
$ cd -
/home/xoadmin/Music
Но если вы часто работаете с одними и теми же каталогами, вводить длинные пути быстро надоедает.
💭 Проблема
Допустим, вы часто заходите в каталог
/home/smith/Family/Memories/Photos
Чтобы попасть туда, каждый раз приходится писать:
cd ~/Family/Memories/Photos
А хотелось бы просто:
cd Photos
Однако, если в текущей папке нет подкаталога Photos, Bash выдаст:
bash: cd: Photos: No such file or directory
📎 Решение: CDPATH
Переменная CDPATH говорит Bash, где ещё искать каталоги при выполнении
cd.CDPATH=$HOME/Family/Memories
Теперь, где бы вы ни находились:
$ pwd
/etc
$ cd Photos
/home/smith/Family/Memories/Photos
Работает!
🙂 Несколько путей
Можно указать сразу несколько мест (через двоеточие):
CDPATH=$HOME:$HOME/Projects:$HOME/Family/Memories:/usr/local
Bash будет проверять их по порядку. Первое совпадение — и переход произойдёт именно туда.
⚙️ Постоянная настройка
Чтобы не прописывать CDPATH вручную при каждом запуске терминала, добавьте строку в ~/.bashrc (для конкретного пользователя) или /etc/profile (для всех пользователей системы).
export CDPATH=$HOME:$HOME/Sources:/usr/local
🔍 Пример из практики
Пусть у вас есть каталог ~/Sources, где хранятся проекты:
echo $CDPATH
/home/xoadmin/Sources
Теперь:
$ pwd
/home/xoadmin/Music
$ cd picom
/home/xoadmin/Sources/picom
Без лишнего ввода — просто
cd picom.⚠️ Пара моментов
Если каталог найден через CDPATH,
cd выведет полный путь:$ cd Photos
/home/smith/Family/Memories/Photos
Это нормально — просто признак, что каталог был найден не в текущей директории.
Текущее место (
.) можно тоже включить в CDPATH, чтобы cd вела себя стандартно:export CDPATH=.:$HOME/Projects
🟢 В сухом остатке
CDPATH — это как "умный поиск" для
cd. Если вы часто прыгаете между проектами, архивами или каталогами с данными, он экономит десятки нажатий и делает навигацию в консоли почти мгновенной.