Старый вопрос, я знаю, но я наткнулся на него только сейчас, потому что я исследовал именно эту проблему.
По какой-то причине /usr/local/bin
был только в PATH, когда становился root через sudo su -
. При использовании sudo -i
его не было. Конечно, теперь я знаю, что могу добавить его в /etc/sudoers, но это все еще не объясняет, почему он уже там после su -
. Откуда взялась эта часть PATH?
После долгих поисков я нашел ответ:
Путь по умолчанию, содержащий '/usr/local/bin', на самом деле жестко запрограммирован в su (1 ).
Таким образом, никакая конфигурация pam, профиль, bashrc или что-либо еще не были ответственны за выборочное добавление этого элемента. Он всегда уже был там, когда su
брал верх. А так как sudo
вообще не вызывает su
, а использует собственную конфигурацию, послеsudo -i
Я обнаружил, что это верно для RHEL6 и RHEL7. Я не проверял никакую другую версию или дистрибутив.