GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wer legt die Umgebungsvariablen $user und $username fest?

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);

Linux
  1. Linux-Umgebungsvariablen:Lesen und Festlegen auf einem Linux-VPS

  2. Benutzerumgebungsvariablen Mit „su“ und „sudo“ unter Linux

  3. Fragen zu putenv() und setenv()

  4. Legen Sie eine temporäre Umgebung fest ($PATH)

  5. Festlegen von Linux-Umgebungsvariablen

So legen Sie die Umgebungsvariable in Windows fest

So setzen und listen Sie Umgebungsvariablen in Linux auf

So setzen und listen Sie Umgebungsvariablen in Linux auf

So setzen und löschen Sie Umgebungsvariablen unter Linux

Linux-Umgebungsvariablen

Wie viele Umgebungsvariablen nicht gesetzt sind