Was ist dieunterschiedlichzwischen:
sudo su -
Und
su -i
und wo wäre das eine dem anderen vorzuziehen?
-, -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
Und
su - run a command with substitute user and group ID
Auszüge aus der man su
Seite.
Antwort1
-i
Da dem Befehl kein Argument vorliegt su
, besteht der Unterschied darin, dass das eine funktioniert und das andere nicht.
Wenn Sie meinten su -l
, funktioniert es auf einer Ubuntu-Box standardmäßig immer noch nicht, da das root
Konto gesperrt ist und kein Kennwort eingegeben werden muss.
Es gibt keinen Unterschied zwischen den Argumenten -
und -l
. Sie sind beide Variationen derselben Option. Sie haben die Zeile von der man
Seite, die uns das sagt, tatsächlich in Ihre Frage aufgenommen.
Der Unterschied zwischen der Verwendung der Argumente -
, -l
, oder --login
(sie sind alle gleich) und der Verwendung ohne Argument wird größtenteils in dem Auszug erklärt, den Sie in Ihren Beitrag aufgenommen haben. Dieser Teil erklärt, was ohne das Argument geschieht:
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.
Beachten Sie, dass dies su
nicht nur für steht root
. Es steht nicht fürSuperuserwie beim sudo
Kommentar. Es steht fürErsatzbenutzerund Sie können den Benutzer angeben, den Sie als Argument verwenden möchten, um einen Befehl als dieser Benutzer auszuführen