当前位置: 首页 > article >正文

【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变量


http://www.kler.cn/news/342725.html

相关文章:

  • 通义灵码-----阿里巴巴推出的 AI 编程助手,一站式安装使用教程。 我自己就是在用,感觉写代码会高效很多
  • 基于STM32的智能门锁
  • 日志分析(二)
  • 洗衣店订单处理:Spring Boot系统的优势
  • 【黑马点评】6 秒杀优化并用Apifox添加优惠券信息
  • 数据结构_day1
  • 怎么找矩阵系统,怎么源码搭建,源头技术开发需要哪些支持
  • 华为Nova12活力版nova 11,FIN-AL60/FOA-AL00手机忘记密码到底怎么解锁无法激活设备已锁定平台工具软件固件使用解决方案
  • 大家觉得我这个产品点子怎样,能打造出爆品吗
  • Rust编程的函数
  • Spring异步线程池的问题
  • 多模态大语言模型(MLLM)-Blip2深度解读
  • SQL 干货 | 使用 EXISTS 编写 SELECT 查询
  • LeetCode 3311. 构造符合图结构的二维矩阵
  • Pr 视频效果:元数据和时间码刻录 - 元数据
  • React学习01 jsx、组件与组件的三大属性
  • 每日一题:单例模式
  • 01数组算法/代码随想录
  • 【计算机网络】CDN
  • java多态-cnblog