sudo su изменяет только текущего пользователя на root. Настройки среды (например, PATH) остаются неизменными.
sudo -i создает новую среду, как если бы root только что вошел в систему.
Разница более заметна, если вы используете других пользователей. После sudo su bob вы будете боб, но там же. После sudo -i -u bob вы будете bob, в домашнем каталоге bob, с базой по умолчанию bob и с файлами bob .profile и любыми другими сценариями входа.
Подробнее см. [F6] о том, что [ f7] делает. К сожалению, man su подробно освещен.
Найдена версия man su (от login-1: 4.1.4.2 + svn3283-3ubuntu5.1), которая имеет после чего:
$ PATH сбрасывается в соответствии с параметрами /etc/login.defs ENV_PATH или ENV_SUPATH (см. ниже); $ IFS сбрасывается на «& lt; space> & lt; tab> & lt; newline>", если он был установлен. Обратите внимание, что поведение по умолчанию для среды следующее: переменные среды $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH и $ IFS сбрасываются. Если --login не используется, среда копируется, за исключением перечисленных выше переменных. Если используется -login, переменные среды $ TERM, $ COLORTERM, $ DISPLAY и $ XAUTHORITY копируются, если они были установлены. Другие среды могут быть установлены модулями PAM.Так зависит от того, изменяется ли sudo su среда, зависит от вашего распределения и настройки. Таким образом, sudo -i теоретически более портативен.
Основная проблема - одна из (не очень) правильных настроек среды.
Используя sudo su, новая оболочка получает свою среду от пользователя, который выдает команду, что может быть проблематичным. [!d1 ]
С sudo -i вы получаете чистую корневую оболочку.
См. Особые замечания по sudo и shells
Остается заметить, что редко бывает необходимо создать корень оболочки.