linux-labs

← Практика

Команда не находится (сломан PATH)

Сломай-почини · Лёгкое · 15 мин · 120 баллов

Команда не находится (сломан PATH)

В оболочке пользователя deploy почти любая команда выдаёт command not found — даже ls и cat. При этом по полному пути (/bin/ls) всё работает. Кто-то сломал переменную PATH в его профиле.

Задача

Сделай так, чтобы:

  1. в новой сессии пользователя deploy базовые команды (ls, cat, grep…) находились без указания полного пути;
  2. PATH включал стандартные каталоги (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) и нужный пользователю каталог инструментов /opt/tool/bin;
  3. исправление было в профиле (~/.bashrc / ~/.profile), а не временным export в текущей сессии.

Подсказки по подходу

  • Что сейчас в PATH: echo "$PATH" — наверняка он урезан или перезаписан.
  • Чтобы вернуть себе команды прямо сейчас, временно почини в сессии: export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH.
  • Найди виновную строку: grep -n PATH ~/.bashrc ~/.profile — ищи PATH=... без :$PATH (перезапись вместо дополнения).
  • Проверяй результат по кнопке «Проверить».

Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.

Подсказки

Подсказка 1

Посмотри, что сейчас в переменной: echo "$PATH". Если базовых каталогов (/usr/bin, /bin) там нет — отсюда и «command not found».

Подсказка 2

Чтобы вернуть себе команды прямо сейчас, временно почини PATH в сессии: export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH. Затем найди источник поломки: grep -n PATH ~/.bashrc ~/.profile.

Подсказка 3

Виновная строка обычно вида export PATH=/что-то без :$PATH — она затирает весь путь. Поправь её так, чтобы дополнять, а не заменять, и чтобы входил /opt/tool/bin, например export PATH="$PATH:/opt/tool/bin". Открой новую сессию и проверь, что ls и tool находятся.

Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.