Я попытался переключиться на «root» в CentOS, запустив su
. Он меняется на «root», но не похоже на настоящего «root» пользователя.
Например, по умолчанию ifconfig
командовать в /sbin
не найден в пути для обычного пользователя, но для 'root' команда может быть найдена. Когда я бегу su
, Я все еще получаю bash: ifconfig: command not found
вывод, когда я пытаюсь запустить ifconfig
.
Однако когда я бегу su -
, ifconfig
просто работает.
В чем разница между su
и su -
в CentOS?
Добавление -
опция влияет на поведение вашей среды. Для всех практических целей среда полностью сброшена. В общем, вы, вероятно, захотите использовать su -
вместо простого su
. На странице руководства:
-l Simulate a full login. The environment is discarded except for HOME, SHELL, PATH, TERM, and USER. HOME and SHELL are modified as above.
USER is set to the target login. PATH is set to ``/bin:/usr/bin''. TERM is imported from your current environment. The invoked shell is
the target login's, and su will change directory to the target login's home directory.
- (no letter) The same as -l.
su -
вызывает оболочку входа в систему, которая, помимо прочего, гарантирует, что .bashrc
и другие сценарии запуска оболочки запускаются, как если бы вы вошли в систему напрямую как root через консоль или SSH. Профиль root обычно устанавливает ваш путь для включения /sbin
где ifconfig
вообще живёт.