Коли ви sudo
отримуєте попередньо налаштовану конфігурацію $PATH
, яка є (мабуть, що-небудь) на зразок шляху за замовчуванням кореневого користувача. Ваша програма не входить до списку каталогів, визначених $PATH
.
Див. Наприклад
sudo намагається бути безпечним під час виконання зовнішніх команд.
Є два різних способи поводження зі змінними середовища. За замовчуванням
включена опція env_reset
sudoers . Це призводить до того команди повинні бути виконані з мінімальною середовищем , що містить TERM
,
PATH
, HOME
, SHELL
, LOGNAME
, USER
і USERNAME
на додаток до змінних з процесу викликає це допускається env_check
і env_keep
sudoers варіантів. Існує фактично білий список змінних середовища.
Якщо ви не можете налаштувати sudo
збереження свого $PATH
, звичайним способом вирішення є визначення повного імені програми. Це може не спрацювати зі сценаріями, які викликають інші виконувані файли в каталозі (без доступу).
cd
. Використанняdzdo cd
повернення "команда не знайдена". Звичайно, пізніше я зрозумів, щоcd
введення в каталог, на який я не маю дозволів, не дуже допоможе, тому мені або потрібна коренева оболонка, або потрібноdzdo ls
,dzdo mv
і т. Д. Вміст поза цим dir.