По умолчанию sudo
НЕ передает исходный PATH пользователя в процесс суперпользователя и получает некоторый PATH по умолчанию, определенный в системе.Это легко увидеть, если вы запустите sudo env, чтобы увидеть всю среду процесса sudo:
$ sudo env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Команда, которую вы пробовали, "sudo echo $ PATH" нене проверяйте ничего, потому что оболочка сначала переводит $ PATH в любое значение, которое имеет эта переменная - и только затем вызывает команду (sudo), поэтому она просто печатает значение вашей внешней среды: -)
Чтобы получитьPATH для передачи внутри sudo, вы можете сделать что-то вроде этого:
$ sudo PATH=$PATH sh -c env | grep PATH
PATH=/usr/share/Modules/bin:/usr/lib64/ccache:/home/nyh/gaps:/home/nyh/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/sbin:/sbin:/usr/games:/usr/local/android-sdk-linux/tools:/usr/local/android-sdk-linux/platform-tools:/home/nyh/google-cloud-sdk/bin
В основном, команда, которую я передал для запуска sudo, запускается, устанавливая PATH в значение $ PATH (помните, что $ PATH раскрывается внешней оболочкой,до запуска sudo, таков и реальный путь, который я хочу!) и запуск оболочки (которая будет использовать этот новый PAT) для «env».Как видите, env действительно выбрал правильный путь.Вы можете заменить «env» любой программой, которую хотите запустить.