$ LOGNAME和日志名之间的区别


12

echo $LOGNAMElogname命令正常运行时,会得到以下相同的结果:

pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya

那么,它们之间有什么区别吗?

Answers:


17

根据环境变量

$LOGNAME$USER给出的相同

当前登录用户的名称。该变量由系统设置。您可能不应该手动更改其值。

man logname

日志名-打印用户的登录名


Expained 不同地使用由下面的例子:

pandya@pandya-desktop:~$ sudo su
root@pandya-desktop:/home/pandya# echo $LOGNAME
root
root@pandya-desktop:/home/pandya# logname
pandya
root@pandya-desktop:/home/pandya# exit
exit
pandya@pandya-desktop:~$

在这里您可以看到以root身份登录终端后的区别,

  • $LOGNAME给出终端中当前登录用户的名称(即root
  • logname打印会话的打印用户的登录名(即pandya


6

实用程序日志名称在16.04中被破坏,显然是故意的,因为有可能破解它返回的值,这可能是一个安全漏洞。 https://bugzilla.gnome.org/show_bug.cgi?id=747046 我一直在某些脚本中使用登录名,并且发现它很有用,因为无论我是从a调用它始终返回相同的值(我的登录名)我自己的级别或通过sudo调用,而环境变量$ USER和$ LOGNAME则没有。我并不担心有人侵入我的计算机并修改它返回的值。......。我找到了解决方法。我在主目录中这样创建了一个文件

echo $USER > ~/.logname

当我想访问我的日志名(例如,分配给Bash变量g_logname)时,我这样做是:

declare g_logname="$(<~/.logname)";

无论是我本人还是通过sudo在根级别上运行,这对我都有效,该目录将“〜”分配为我的主目录。我可以为系统上每个用户的主目录创建一个.logname文件。是的,有人可以入侵我的计算机并更改这些文件,但是我并不为此担心。我只希望我的脚本能工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.