Почему sudo не может найти команду после того, как я добавил ее в PATH?

Я хочу добавить некоторые команды в PATH, чтобы их можно было удобно использовать, например:

export $PATH = "$PATH:/opt/storm/bin"

но иногда storm нужны полномочия root, но когда я использую его с sudo, Ubuntu не может найти команду.

sudo storm nimbus

как я могу найти эти команды, когда я использую sudo?

2 ответа

Решение

Вы должны добавить путь к sudo дорожка.

Запустите команду sudo visudo

вы увидите такую ​​строку:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

Теперь добавьте путь вашей команды здесь, и это должно работать.

Например:

$ sudo storm
sudo: storm: command not found

Теперь добавьте путь, как указано выше:

$ sudo visudo 

secure_path="......:/opt/storm/bin"

Сохранить и выйти.

сейчас sudo storm будет просто работать нормально.

Примечание. Вы также должны добавить путь к пути по умолчанию в /etc/profile,

Я думаю, что вы создали псевдоним на уровне пользователя. Вот почему ярлыки доступны только на уровне пользователя.

Вы должны добавить эту командную строку псевдонима в файл.bashrc в папке / root, а не в /home/user/.bashrc(этот файл.bashrc принадлежит учетной записи пользователя, а не root).

Так что вы можете использовать вашу команду псевдонима непосредственно в оболочке при входе в систему как root.

@Maythux объяснил, каков безопасный путь, по которому sudo ищет исполняемые файлы

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

вы можете добавить путь непосредственно в список, как подсказывает ответ, но лучший и правильный способ - создать символическую ссылку unde /usr/bin

sudo ln -s -f  /opt/storm/bin/storm /usr/bin/storm
Другие вопросы по тегам