Что такоеразличиемежду:
sudo su -
и
su -i
и где один вариант будет предпочтительнее другого?
-, -l, --login Start the shell as a login shell with an environment similar to a real login: o clears all the environment variables except TERM and variables specified by --whitelist-environment o initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH o changes to the target user's home directory o sets argv[0] of the shell to '-' in order to make the shell a login shell
и
su - run a command with substitute user and group ID
выдержки из man su
страницы.
решение1
-i
Аргументов у команды нет su
, поэтому разница будет в том, что одна команда сработает, а другая — нет.
Если вы имели в виду su -l
, то он по-прежнему не работает по умолчанию на компьютере с Ubuntu, поскольку root
учетная запись заблокирована и нет пароля для ввода.
-
Между аргументами и нет никакой разницы -l
. Они оба являются вариациями одного и того же варианта. Вы фактически включили строку со man
страницы, которая говорит нам об этом, в свой вопрос.
Разница между использованием аргумента -
, -l
, или --login
(они все одинаковы) и отсутствием аргумента в основном объясняется в отрывке, который вы включили в свой пост. Эта часть рассказывает, что она делает без аргумента:
For backward compatibility, su defaults to not change the current directory and to only set the environment variables HOME and SHELL (plus USER and LOG‐
NAME if the target user is not root). It is recommended to always use the --login option (instead of its shortcut -) to avoid side effects caused by
mixing environments.
Обратите внимание, что это su
не просто для root
. Это не означаетсупер пользователькак и в sudo
комментарии. Это означаетзамещающий пользовательи вы можете указать пользователя, которого хотите использовать в качестве аргумента для запуска команды от имени этого пользователя