logname
sobe para o usuário que possui tty
(lendo /var/run/utmp
), enquanto $LOGNAME
é uma variável env que contém o usuário que executa o processo shell atual. Você pode facilmente verificar isso com os seguintes comandos:
# 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