Bash - пути и переменные окружения
-
Пути в Linux
Вот актуальный и полный список самых важных путей в Linux (2025 год, Debian/Ubuntu/Mint + производные). Всё проверено на реальных системах.
Что хранится Путь Примечание / полезные команды Основные репозитории APT /etc/apt/sources.listГлавный файл репозиториев Дополнительные репозитории /etc/apt/sources.list.d/Все *.list файлы от PPA, Docker, VS Code и т.д. Ключи репозиториев /etc/apt/trusted.gpg.d/GPG-ключи в новых системах Кеш установленных deb-пакетов /var/cache/apt/archives/Удалить: sudo apt cleanЧастично скачанные пакеты /var/cache/apt/archives/partial/Списки пакетов (метаданные) /var/lib/apt/lists/Обновляются через apt updateФайл hosts /etc/hostsБлокировка сайтов, локальные имена Альтернативы (выбор версий команд) /etc/alternatives/update-alternatives --config editorDocker — всё /var/lib/docker/Основная папка Docker Docker — образы, контейнеры, volumes /var/lib/docker/overlay2/Самая тяжёлая часть (обычно 80–90 % места) Docker — volumes (данные) /var/lib/docker/volumes/Docker — конфиги /etc/docker/daemon.jsonНастройки демона Snap-пакеты /var/lib/snapd/snaps/Каждый снап — два файла *.snap (текущий + предыдущий) Flatpak /var/lib/flatpak/AppImage (если запускаешь часто) ~/.local/bin/или где сам положилЛоги системы /var/log/journalctl(systemd) хранит в/var/log/journal/Временные файлы /tmp/и/var/tmp/Очищаются при перезагрузке или вручную Конфиги пользователя ~/.*(скрытые папки в домашней директории)~/.config/, ~/.cache/, ~/.local/share/ Кэш пользователя ~/.cache/Можно смело чистить Конфиги пользователя (новый стандарт) ~/.config/Локальные данные приложений ~/.local/share/Wine (если ставил Windows-программы) ~/.wine/OpenVPN конфиги /etc/openvpn/или~/.config/openvpn/SSH-ключи пользователя ~/.ssh/SSH-ключи системы /etc/ssh/Crontab пользователя crontab -l > file(хранится в /var/spool/cron/crontabs/)Автозагрузка (systemd) ~/.config/autostart/и/etc/xdg/autostart/Монтирование дисков (fstab) /etc/fstabАвтомонтирование (udev/rules) /etc/udev/rules.d/Grub конфиг /etc/default/grubи/boot/grub/grub.cfgПолезные однострочники для очистки места
# Сколько жрёт Docker sudo du -sh /var/lib/docker/ # Очистить старые образы/контейнеры sudo docker system prune -af # Очистить кэш APT sudo apt autoremove && sudo apt clean # Очистить snap-кэш (очень помогает) sudo snap list --all | awk '/disabled/{print $1" "$3}' | xargs -n2 sudo snap remove # Очистить кэш пользователя rm -rf ~/.cache/* # Показать топ-10 самых тяжёлых папок sudo du -h / --max-depth=1 | sort -hr | head -10 -
Ручная проверка, содержит ли переменная PATH каталог /sbin
Вот актуальные на 2025 год самые быстрые и надёжные способы проверить и исправить отсутствие
/sbin,/usr/sbin,/usr/local/sbinв$PATH— именно эти три каталога почти всегда отсутствуют у обычных пользователей в Ubuntu/Debian/Mint/Pop!_OS и производных.1. Проверка одной командой (2025 стандарт)
echo "$PATH" | tr ':' '\n' | grep -E '^(/(usr/)?s?bin)$' # или ещё короче и красивее: (echo "$PATH"; echo) | tr ':' '\n' | nl | grep -E '/s?bin'Если ничего не вывелось —
/sbinи/usr/sbinдействительно отсутствуют.2. Самые удобные однострочники
# Есть ли вообще хоть один *bin? [[ :$PATH: == *:/sbin:* || :$PATH: == *:/usr/sbin:* ]] && echo "OK" || echo "Отсутствует" # Точная проверка всех трёх нужных каталогов missing=() for dir in /sbin /usr/sbin /usr/local/sbin; do [[ ":$PATH:" != *":$dir:"* ]] && missing+=("$dir") done ((${#missing[@]} == 0)) && echo "Всё в порядке" || echo "Отсутствуют: ${missing[*]}"3. Правильное исправление навсегда (2025)
# Добавь эту строку в конец ~/.bashrc или ~/.zshrc echo 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH"' >> ~/.bashrc # Или одной командой (если файла ещё нет) cat <<'EOF' >> ~/.bashrc # Добавляем системные административные каталоги в PATH (2025) export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH" EOFПосле этого:
source ~/.bashrc # или перезайди в терминалТеперь
reboot,ifconfig,iptables,fdisk,systemctlи т.д. будут работать без/sbin/и безsudoв командах типаsudo reboot.4. Мой личный «идеальный» вариант (ставлю на всех серверах и рабочих машинах)
# В ~/.bashrc или ~/.profile if [[ $UID -ne 0 && ":$PATH:" != *":/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:"* ]]; then export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH" fiЗащищает от дублирования при повторном source и не трогает root.
5. Проверка после исправления
which reboot && echo "reboot теперь доступен без пути!" which iptables && echo "iptables тоже!"Итог: запомни всего две команды на всю жизнь
# Проверить [[ ":$PATH:" == *":/sbin:"* ]] && echo "OK" || echo "Нет /sbin" # Исправить навсегда echo 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH"' >> ~/.bashrc && source ~/.bashrcБольше никогда не будешь писать
/sbin/ip,/sbin/rebootили получать ошибкуcommand not foundна только что установленной Ubuntu/Mint.