Если я запущу sudo which abc, я ожидаю, что он будет искать суперпользователей $PATH для программы 'abc', но похоже, что он ищет только подмножество.

Я могу увидеть это, запустив sudo echo $PATH и сравнив найденные пути.

$ sudo which abc
which: no abc in (/sbin:/bin:/usr/sbin:/usr/bin)

$ sudo echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin

Что здесь происходит?

1
ctrl-alt-delor 28 Июл 2018 в 14:57
И где на самом деле находится abc?
 – 
steve
28 Июл 2018 в 13:50
2
Обратите внимание, что sudo echo $PATH не будет показывать $PATH root. решается текущим, что она будет, а затем передается sudo....
 – 
steve
28 Июл 2018 в 13:52
1
Также обратите внимание, что если вы используете sudo для фактического выполнения abc, он обычно настроен на поиск собственного secure_path, а не PATH пользователя root. См. man sudoers.
 – 
steeldriver
28 Июл 2018 в 14:25

1 ответ

Лучший ответ

$PATH раскрывается перед запуском sudo. Поэтому вы видите значение PATH для себя, а не для пользователя, которому вы sudo.

Попробуйте вместо этого:

$ sudo bash -c 'echo $PATH'
4
slm 29 Июл 2018 в 00:22