GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Was ist der Unterschied zwischen `su -` und `su –login`?

Von su Manpage:

For  backward  compatibility, su defaults to not change the current directory
and to only set the environment variables HOME and SHELL (plus USER and LOGNAME
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.

...

-, -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

        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

Es ist schwer zu sagen, ob es einen Unterschied zwischen - gibt und --login (oder angeblich nur -l ). Auf der Manpage steht nämlich „anstelle der Abkürzung -“, aber all diese Optionen sind zusammengefasst, und ich sehe keine Erklärung für den Unterschied, falls es ihn überhaupt gibt.

UPD Ich habe die Frage überprüft, die mein Problem lösen soll. Die Frage bezieht sich im Wesentlichen auf den Unterschied zwischen su und su - . Und ich frage nach dem Unterschied zwischen su - und su --login . Also nein, es löst es überhaupt nicht.

Akzeptierte Antwort:

Debians manueller Eintrag scheint aufschlussreicher zu sein:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged
       in directly.

       When - is used, it must be specified before any username. For portability it is
       recommended to use it as last option, before any username. The other forms (-l
       and --login) do not have this restriction.

Linux
  1. Der Unterschied in der Verwendung zwischen Shell-Variablen und Umgebungsvariablen?

  2. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  3. Linux – Der Unterschied zwischen Reboot, Init 6 und Shutdown -r Now?

  4. Was ist der Unterschied zwischen einem normalen Benutzer und einem Systembenutzer?

  5. Was ist der Unterschied zwischen Print und Printf in Awk?

Verstehen des Unterschieds zwischen dem Befehl sudo und su unter Linux

Was ist der Unterschied zwischen macOS- und Linux-Kernels

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen einer Konsole, einem Terminal und einer Shell?

Was ist der Unterschied zwischen nohup und kaufmännischem Und?