Pan*_*dya 14 environment-variables
当echo $LOGNAME
和logname
命令正常运行时,我从它们得到相同的结果:
pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别吗?
Pan*_*dya 18
从环境变量:
$LOGNAME
与$USER
给出的相同
当前登录用户的名称。该变量由系统设置。您可能不应该手动更改其值。
来自man logname
:
logname - 打印用户的登录名
通过以下示例进行不同的解释:
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:~$
Run Code Online (Sandbox Code Playgroud)
在这里,您可以在终端中以 root 身份登录后看到不同之处,
$LOGNAME
给出终端中当前登录用户的名称(即root
)logname
打印登录到会话的用户的登录名(即pandya
)小智 6
实用程序日志名在 16.04 中被破坏,显然是故意的,因为它可能会破解它返回的值,这可能是一个安全漏洞。 https://bugzilla.gnome.org/show_bug.cgi?id=747046 我一直在一些脚本中使用 logname,发现它很有用,因为它总是返回相同的值(我的登录名),无论我是从我自己的级别或来自 sudo 调用,而环境变量 $USER 和 $LOGNAME 没有。我并不担心有人入侵我的计算机并修改它返回的值。唉......我找到了一个解决方法。我在我的主目录中创建了一个文件
echo $USER > ~/.logname
Run Code Online (Sandbox Code Playgroud)
当我想访问我的日志名(例如,分配给 Bash 变量 g_logname)时,我这样做:
declare g_logname="$(<~/.logname)";
Run Code Online (Sandbox Code Playgroud)
这对我有用,无论是作为我自己还是通过 sudo 在根级别,它维护“〜”作为我的主目录的分配。我可以为系统上每个用户的主目录创建一个 .logname 文件。是的,有人可以入侵我的计算机并更改这些文件,但我并不担心。我只是想让我的脚本工作。
归档时间: |
|
查看次数: |
21317 次 |
最近记录: |