日期:2014-05-16  浏览次数:20647 次

Linux命令who am i ,who ,whoami

?

今天要说的不是成龙的电影“我是谁”,而是Linux里的who系列命令,包括who、whoami和who am i。

先看看这三个命令的输出信息:

?

[rocrocket@rocrocket ~]$?whoami
rocrocket
[rocrocket@rocrocket ~]$?who am i
rocrocket pts/3??????? 2008-12-30 13:17 (:0.0)
[rocrocket@rocrocket ~]$?who
rocrocket :0?????????? 2008-12-30 09:54
rocrocket pts/0??????? 2008-12-30 09:55 (:0.0)
rocrocket pts/1??????? 2008-12-30 09:57 (:0.0)
rocrocket pts/3??????? 2008-12-30 13:17 (:0.0)
当我用sudo su(或者sudo su -)更换到root用户之后,你再看看:

[rocrocket@rocrocket ~]$ sudo su
[root@rocrocket rocrocket]#?whoami
root
[root@rocrocket rocrocket]#?who am i
rocrocket pts/3??????? 2008-12-30 13:17 (:0.0)
[root@rocrocket rocrocket]#?who
rocrocket :0?????????? 2008-12-30 09:54
rocrocket pts/0??????? 2008-12-30 09:55 (:0.0)
rocrocket pts/1??????? 2008-12-30 09:57 (:0.0)
rocrocket pts/3??????? 2008-12-30 13:17 (:0.0)

看出区别来了吧,whoami显示的是当前“操作用户”的用户名,而who am i显示的是“登录用户”的用户名。

用Linux的术语来解释就是:(实际用户=uid,即user id。有效用户=euid,即effective user id)

who am i 显示的是实际用户的用户名,即用户登陆的时候的用户ID。此命令相当于who -m。
whoami?? 显示的是有效用户ID.