【Linux】Linux 环境变量中 LOGNAME 和 USER 有什么本质区别

一、概念

在 Linux 中,LOGNAME和 USER都是环境变量,用于表示当前用户的用户名。

二、区别点

LOGNAME:

  • 在某些情况下,它可能会保持不变,即使用户通过   su 命令切换到其他用户。

USER:

  • 在使用   su 命令切换用户时,USER变量会随着当前用户的变化而变化。
  • 更常用于脚本和程序中,表示当前执行上下文中的用户。

三、深刻理解

(1)LOGNAME更倾向于表示用户的初始登录信息,而USER则更动态,表示当前执行的用户。

(2)在大多数情况下,这两个变量的值是相同的,但在使用su切换用户时,它们可能会有所不同。

结合例子理解

假设你以用户alice登录。

LOGNAMEUSER都将被设置为alice

如果你执行命令 su bob,并输入bob的密码,你将切换到用户bob的身份。

在这种情况下:

  • LOGNAME:通常仍然保持为alice,因为它表示最初登录的用户。
  • USER:会更改为bob,因为它表示当前执行上下文中的用户。

这意味着:

  • LOGNAME主要反映的是用户的登录信息,不会因为使用   su 切换用户而改变。
  • USER反映的是当前正在执行命令的用户,会随着用户的切换而变化。

        这种特性在编写脚本时可能会影响你对用户身份的判断,因此在需要获取当前用户信息时,通常建议使用USER变量;而设计规定只能由shell登录初始用户使用的某个脚本,通常需要获取LOGNAME变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值