在阅读有关环境变量的文章时,我遇到的是LOGNAME
,我想知道这个变量和命令logname
返回的内容之间的区别 - 因为它们返回的内容确实不同。
-bash-3.2$ logname
user11
-bash-3.2$ echo $LOGNAME
user1
虽然,whoami
返回相同的用户LOGNAME
-bash-3.2$ whoami
user1
答案1
logname
上升拥有 的用户tty
(通过从 读取/var/run/utmp
), while$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