Как сделать `sudo` сохранить $ PATH?

Мне нужно запустить программу, установленную в / opt / godi / sbin (пользовательский каталог). Если я добавлю этот каталог в свой PATH, добавив следующую строку в мой .bashrc-файл

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin 

то я могу попытаться выполнить команду просто отлично (за исключением того, что она терпит неудачу, потому что ей нужно sudo). Однако, когда я пытаюсь использовать sudo:

 sudo godi_console 

Я получаю следующую ошибку

 sudo: godi_console: command not found 

Проверка переменной PATH после использования sudo показывает, что она не включает тот же PATH, что и у обычного пользователя:

 $ sudo sh # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

Почему ПУТЬ не то же самое? Я делаю что-то неправильно? Я на Debian Jessie и, к сожалению, не могу обойти проблему, передав sudo абсолютную ссылку на godi_console, потому что сама godi_console также зависит от правильной установки PATH.

Вы всегда можете:

 sudo env "PATH=$PATH" godi_console 

или даже:

 sudo "PATH=$PATH" godi_console 

поскольку sudo обрабатывает ведущие аргументы, содержащие = символы как назначения переменных среды сами по себе.

В качестве меры безопасности на Debian, /etc/sudoers имеет параметр secure_path установленный в безопасное значение.

Вы также можете установить PATH по умолчанию на /etc/sudoers

отредактируйте файл, используя visudo

и обновите строку до того, что вы пожелаете: По Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

SUDO по умолчанию изменяет переменные env.

Проверьте его руководство и вариант под названием env_reset.

Вам просто нужно отключить его в / etc / sudoers.