環境変数について読んでいるときに出会ったのはLOGNAME
でした。この変数と、コマンドlogname
が返すものとの違いを知りたいのですが、どちらも違いがありました。彼らは戻った。
-bash-3.2$ logname
user11
-bash-3.2$ echo $LOGNAME
user1
ただし、whoami
はLOGNAME
と同じユーザーを返します
-bash-3.2$ whoami
user1
logname
は、tty
を所有するユーザーに昇格します(/var/run/utmp
)、一方$LOGNAME
は、現在のシェルプロセスを実行するユーザーを含む環境変数です。これは、次のコマンドで簡単に確認できます。
# 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