进一步阅读

进一步阅读

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

for cmd in w who whoami id
do
    echo $cmd
    $cmd
    echo =========================
    echo "             "
done

我明白了

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)     
=========================                   

注意只whoami输出id一些东西。当我在计算机上运行相同的操作时,我看到所有命令的类似结果。

w为什么 Codecademy 不显示和 的用户who?这些命令有什么不同?

答案1

  • id报告
    • 其自身进程的当前凭据;或者
    • 指定用户的凭据,如从系统账户数据库
  • whoami报告其自身进程的当前凭据。
  • whow从以下位置报告活动登录会话表登录数据库

BSD doco 指出,它whoami完成了 的一部分工作id,这id使得它变得过时。

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

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

进一步阅读

相关内容