Stimmen diese Variablen auch immer mit dem aktuell angemeldeten Benutzernamen überein (das tun sie auf meinem Debian-System)? Kann ich davon ausgehen, dass sie in anderen Unix(-ähnlichen) Systemen verfügbar sind?
Ich bin auch neugierig, warum man whoami
verwenden würde anstatt nur irgendeine dieser Variablen zu lesen.
Akzeptierte Antwort:
Es ist Anmeldung .
Die Linux-Manpage login(1) sagt:
Der Wert für $HOME , $USER , $SHELL , $PATH , $LOGNAME und $MAIL werden entsprechend den entsprechenden Feldern in der Passworteingabe gesetzt.
Die Manpage FreeBSD login(1) sagt:
Die Anmeldung Das Dienstprogramm gibt Informationen in die Umgebung ein (siehe environ(7)), die das Home-Verzeichnis (HOME), den
Befehlsinterpreter (SHELL), den Suchpfad (PATH), den Terminaltyp (TERM) und den Benutzernamen
des Benutzers angeben (sowohl LOGNAME als auch BENUTZER).
Die Manpages von NetBSD, OpenBSD und OS X sagen dasselbe.
Hier ist der Quellcode der util-linux-Anmeldung:
setenv("HOME", pwd->pw_dir, 0); /* legal to override */
setenv("USER", pwd->pw_name, 1);
setenv("SHELL", pwd->pw_shell, 1);
/* ... */
setenv("LOGNAME", pwd->pw_name, 1);
Hier ist der Quellcode des FreeBSD-Logins:
(void)setenv("LOGNAME", username, 1);
(void)setenv("USER", username, 1);
(void)setenv("PATH", rootlogin ? _PATH_STDPATH : _PATH_DEFPATH, 0);