Возможный дубликат:
В чем разница между sudo -i и sudo su -
Я знаю, что обе команды приводят к получению root-shell. Но есть некоторые различия. На некоторых серверах, например, приглашение отличается:
nomike@testerver:~> sudo -i
root@testerver:~> logout
nomike@testerver:~> sudo su -
[root@testerver ~]#
Я полагаю, что работа с ".bashrc" ".bash_profile" и ".profile" как-то отличается.
Вызывает ли один из них оболочку для входа, а другой нет?
Оба sudo -i
и sudo su -
предоставят вам интерактивную оболочку входа в систему. Разница, которую вы видите, связана с тем, как sudo настроен для обработки переменных среды и в данном случае PS1. Ваш PS1 отличается от PS1 root. Если вы посмотрите в / etc / sudoers, вы, вероятно, найдете строку env_keep
, содержащую PS1.
Defaults env_keep += "MAIL PS1 PS2 QTDIR ..."
Это указывает sudo сохранить (среди прочего) переменную среды PS1
в среде команд, которые вы выполняете, так что это то, что вы видите (разные подсказки).
Когда вы запускаете sudo su -
, измененная среда передается в su
, который затем запускает логин shell, su не заставляет среду быть той же самой, поэтому она настраивается с тем, что находится в файлах инициализации root.