Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

  1. Главная
  2. Команды BASH
  3. Bash - пути и переменные окружения

Bash - пути и переменные окружения

Запланировано Прикреплена Закрыта Перенесена Команды BASH
2 Сообщения 1 Posters 4 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • A Не в сети
    A Не в сети
    Admin
    написал в отредактировано
    #1

    Пути в 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 editor
    Docker — всё /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
    
    1 ответ Последний ответ
    0
    • A Не в сети
      A Не в сети
      Admin
      написал в отредактировано
      #2

      Ручная проверка, содержит ли переменная 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.

      1 ответ Последний ответ
      0
      Ответить
      • Ответить, создав новую тему
      Авторизуйтесь, чтобы ответить
      • Сначала старые
      • Сначала новые
      • По количеству голосов


      • Войти

      • Login or register to search.
      Powered by NodeBB Contributors
      • Первое сообщение
        Последнее сообщение
      0
      • Категории
      • Последние
      • Метки
      • Популярные
      • World
      • Пользователи
      • Группы