日志名和 $LOGNAME 之间的区别

Key*_*ate 6 users environment-variables whoami

在阅读有关环境变量的信息时,我遇到的一个是LOGNAME,我想知道此变量与命令logname返回的任何内容之间的区别- 因为它们返回的内容确实有所不同。

-bash-3.2$ logname
user11
-bash-3.2$ echo $LOGNAME
user1
Run Code Online (Sandbox Code Playgroud)

虽然,whoami返回相同的用户LOGNAME

-bash-3.2$ whoami
user1
Run Code Online (Sandbox Code Playgroud)

gui*_*ido 5

logname上升拥有tty(通过从 读取/var/run/utmp)的用户,而$LOGNAME是包含执行当前 shell 进程的用户的环境变量。您可以使用以下命令轻松验证这一点:

# ssh guido@localhost
# whoami
guido
# w
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
guido    pts/3    localhost        13:02    0.00s  0.12s  0.03s sshd: guido [priv]
# echo $LOGNAME
guido
# sudo su
$ whoami
root
$ echo $LOGNAME
root
$ logname
guido
$ ps aux | grep bash
root      1145  0.5  0.1 110176  3604 pts/3    S    13:11   0:00 bash
root      1161  0.0  0.0 103304   844 pts/3    S+   13:11   0:00 grep bash
guido    28363  0.0  0.1 110048  3516 pts/3    Ss   13:02   0:00 -bash
Run Code Online (Sandbox Code Playgroud)