When you provide a double-hyphen the experience you will have is identical to if you had just executed
sudo su without any hyphen.
Passing a single hyphen is identical to passing
--login. The man page for
su describes the behavior as:
Provide an environment similar to what the user would expect had the user logged in directly.
This includes setting your directory to your home directory and setting a bunch of other environment variables.
Passing a double-hyphen to a command is typically used to mark the end of command-line flags and the beginning of non-flag arguments. For example, if you run
touch -R you'll receive an error saying that -R is not an option to
touch, but if you run
touch -- -R it will create a file named
-R. This is true of many command-line tools (
ls -R will do a recursive
ls -- -R will perform an
ls on a file or directory named
So, to wrap this up, when you pass
su it is basically ignoring the
-- and acting like you didn't pass any option at all.