`w`、`who`、`whoami` 和 `id` 的不同输出

who*_*ami 9 users who w whoami

在在线命令行平台中,例如 Codecademy 上的一个,当我运行时

for cmd in w who whoami id
do
    echo $cmd
    $cmd
    echo =========================
    echo "             "
done
Run Code Online (Sandbox Code Playgroud)

我得到

w                              
00:52:54 up 8 days, 14:10,  0 users,  load average: 3.78, 2.98, 2.69      
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT       
=========================                            

who
=========================                                                 

whoami                          
ccuser                          
=========================                              
  
id
uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser)     
=========================                   
Run Code Online (Sandbox Code Playgroud)

注意 onlywhoamiidoutput 的东西。当我在我的电脑上运行同样的东西时,我看到所有命令的结果都相似。

为什么不Codecademy网站为用户显示wwho?这些命令有什么不同?

Jde*_*eBP 13

  • id 报告
    • 其自身流程的当前凭据;或者
    • 系统帐户数据库中读出的指定用户的凭据。
  • whoami 报告其自身进程的当前凭据。
  • whow报告登录数据库中的活动登录会话表。

BSD doco 指出,whoami它完成了 工作的一个子集id,这id使它过时了。

系统不必具有活动登录会话表。在 Linux 操作系统和 BSD 上,如果该表尚未在引导时创建,或此后已被删除,则系统将在没有任何内容的情况下运行。此外,登录和注销不会在 Linux 操作系统上隐式创建它。

此外,该表不需要非特权用户可读,并且命令whow命令都不会将此报告为错误。

进一步阅读