Команда не находится (сломан PATH)
Сломай-почини · Лёгкое · 15 мин · 120 баллов
Команда не находится (сломан PATH)
В оболочке пользователя deploy почти любая команда выдаёт command not found — даже
ls и cat. При этом по полному пути (/bin/ls) всё работает. Кто-то сломал переменную
PATH в его профиле.
Задача
Сделай так, чтобы:
- в новой сессии пользователя
deployбазовые команды (ls,cat,grep…) находились без указания полного пути; PATHвключал стандартные каталоги (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) и нужный пользователю каталог инструментов/opt/tool/bin;- исправление было в профиле (
~/.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-ВМ для задания — обычно пара секунд. После работы её можно остановить.