su vs. su –


The adaptation between the su and the hyphenated su – instructions is the su command with out arguments helps to keep nearly all surroundings variables belonging to the unique person. Opposite to this, the hyphenated su – command clears maximum surroundings variables.

We don’t seem to be speaking about two other instructions however a few command with out a explicit flag (the hyphen is a flag) and the similar command with the flag.

Typing su – is equal to typing su -l; each instructions will transparent many of the surroundings variables. Thus, ahead of proceeding with this text, let’s see what an atmosphere variable is.

Setting variables in Linux:

The surroundings variables are values used to outline traits of our environment through which shell processes and their kid processes are being carried out, for instance, processes use the surroundings variable $SHELL to understand the shell in use (Bash, Zsh, and so on.).

The device has many variables; this article is going to center of attention on the ones variables affected once we use the su command.

To peer all variables for your device, you’ll run the export command as proven underneath.


As you spot within the screenshot above, there are lots of variables in our device. We can center of attention at the explicit variables HOME, SHELL, USER, LOGNAME, and PATH.

The primary variable we’ll see is PATH. The values of this surroundings variable are helpful for the device to understand the place to search out the instructions or systems to execute. The default device’s surroundings variable PATH is outlined within the /and so on/profile record. Customers’ PATH variables are positioned inside their house directories at ~/.profile.

To be informed your PATH surroundings variable values, you’ll use the echo command adopted by means of the $ image and the surroundings variable you need to test, on this case, PATH, as proven within the instance underneath.

echo $PATH

As you’ll see, the device returns the outlined surroundings variables for our device to understand the place to go looking and to find the instructions we wish to execute.

The second one surroundings variable defined on this article is the SHELL variable. The price of this variable tells the device what shell we’re the usage of, if Bash, Zsh, Ksh, and so on.

To peer the worth of your SHELL surroundings variable, repeat the step defined in the past, changing $PATH with $SHELL, as proven within the screenshot underneath.

echo $SHELL

And as you’ll see, the shell is Bash. That’s how our device is aware of what shell we’re the usage of, with the worth proven above.

Any other vital surroundings variable in Linux is $HOME. This price signifies what the house listing of the person is. To be informed this price, you’ll run the command underneath.

echo $HOME

The surroundings variable $ LOGNAME’s price is the person you’re logged in as.


The $USER surroundings variable price is the person ID, which is equal to $LOGNAME.

echo $USER

The surroundings variables defined above are those suffering from the su command when the hyphen or the -l flag are added.

Distinction between “su” and “su -” instructions:

The adaptation between the su command with out flags and su with a hyphen or -l is the command with out flags helps to keep your surroundings variables and most effective adjustments the person.

When used with hyphens or the -l flag, maximum surroundings variables are cleared.

The following instance presentations the linuxhint person switching to root the usage of su with out choices.

Then, after checking the $LOGNAME surroundings variable, we see it stays as linuxhint and no longer root.



Opposite to the former instance, if the hyphen is carried out, it is going to be up to date to root when checking the $LOGNAME variable.



Let’s take a look at the similar with the $USER surroundings variable.


echo $USER

As you’ll see, when doing su as linuxhint to modify to root and checking the $USER variable, it stays as linuxhint.

Opposite to the former instance, if imposing the hyphen, the $USER variable will probably be cleared and up to date as proven underneath.


echo $USER

To finish this instructional, this closing instance presentations the -l flag does precisely the similar because the hyphen.

su -l


echo $USER


Setting variables are a fundamental thought any Linux person should know. As soon as you recognize their serve as, you’ll simply understand the adaptation between the su command with out and with the -l flag (which is equal to the hyphenated su). Should you appreciated this instructional, it’s possible you’ll wish to learn Managing sudo privileges on Linux.

I’m hoping this text appearing the adaptation between “su” and “su –” used to be useful. Stay following this weblog for extra Linux tutorials and guidelines.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More