[Cialug] 'whoami' versus 'who am i', or Identity crisis in Linux-Land

Jeff Chapin chapinjeff at gmail.com
Mon Jul 21 15:36:49 CDT 2008


So, in the course of my job, I stumbled across this little nugget of a 
command that is powerful, useful, and humorous.

Where I work, we have an environment where log in to the server as one 
user (ourselves) and `sudo su - xxx` to another user to do certain 
tasks, such as update and runs scripts. When we do a CVS checkout, it is 
as our own user, with our user name and our passwords.

The issue is that the command 'whoami' returns the name of the user 
currently running code -- not the user you logged in as. The command 
'who am i' will tell you who you origninally logged in as.  'who' tells 
you all the users logged in. 'who i'. 'who a', etc, etc, return nothing 
that I have discovered. It appears that the only options that don't 
require a '-' are 'am i' -- typed exactly like that, and this is not in 
the man page. Incidentally, 'who -a -m -i' actually gives different output.

I have no idea why I get such a kick out of this command, other than the 
fact that it looks like it should not be a real command.

And, to come full circle, we added the following to our documentation to 
simplify our documentation and make things as streamlined as possible:
export CVSROOT=$(who am i | awk '{print 
$1}')@cvs.server.example.com:/cvsroot;
Now, no matter who logs in to do the updates, you run the same commands 
and let the computer do the work of figuring out what user should be 
used for CVS.



Jeff Chapin


More information about the Cialug mailing list