10

The man page description of who command is who - show who is logged on

But there exists a similar command whoami. The man page description of whoami is

whoami - print effective userid

Can anyone explain what exactly these commands do ? How are they different from each other ?

3 Answers 3

10

I am logging in as root in my shell and typing who and this is the output.

who root tty1 2014-08-25 14:01 (:0) root pts/0 2014-09-05 10:22 (:0.0) root pts/3 2014-09-19 10:08 (xxx.xxx.edu) 

It effectively shows all the users that have established a connection.

ssh ramesh@hostname 

Running who again will result in another entry for the user ramesh.

who root tty1 2014-08-25 14:01 (:0) root pts/0 2014-09-05 10:22 (:0.0) root pts/3 2014-09-19 10:08 (xxx.xxx.edu) ramesh pts/4 2014-09-19 12:11 (xxx.xxx.edu) 

Inside the root shell, I just do su ramesh and then run whoami. It will give me the current user, ramesh, as the output.

Effectively, who gives the list of all users currently logged in on the machine and with whoami you can know the current user who is in the shell.

7

who: Print information about users who are currently logged in.

whoami: Print effective username of the user who ran whoami.

For example:

mohsen@debian:~$ who ## list logged in usernames mohsen :0 2014-09-19 16:31 (:0) mohsen pts/0 2014-09-19 16:32 (:0) mohsen pts/1 2014-09-19 19:42 (:0) mohsen@debian:~$ whoami mohsen ##### print my username (mohsen) mohsen@debian:~$ 

I also recommend a command better than who, the w command. Its output is:

mohsen@debian:~$ w 21:45:45 up 5:16, 3 users, load average: 0.68, 0.54, 0.46 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT mohsen :0 :0 16:31 ?xdm? 1:40m 0.27s gdm-session-wor mohsen pts/0 :0 16:32 1.00s 0.15s 0.01s w mohsen pts/1 :0 19:42 2:03m 0.13s 14.06s /usr/bin/python 

See Also :

last command, /var/log/btmp and /var/log/wtmp files.

2

Note on the difference between who and whoami.

The who command will always display the account that you used to login (the real user info).

The whoami command will show your effective user.

For example, if you login as "blammy", the who and whoami commands will display something like this:

> who blammy pts/0 2011-04-23 13:43 (123.23.123.123) > whoami blammy 

This indicates that user "blammy" logged in on 23 Apr 2011 at 13:43 from ip "123.23.123.123".

If you then run su - kapow, you change your effective user to be "kapow".

Now, the who and whoami commands will display something like this:

> who blammy pts/0 2011-04-23 13:43 (123.23.123.123) > whoami kapow 

Notice that the who info stays the same, but the whoami info changes based on the su.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.