Wenn echo $LOGNAME
oder logname
Befehle normalerweise ausgeführt werden, erhalten Sie dasselbe Ergebnis wie folgt:
pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya
Gibt es einen Unterschied zwischen ihnen?
environment-variables
Pandya
quelle
quelle
Das Dienstprogramm logname wurde in 16.04 unterbrochen, anscheinend absichtlich, weil es möglich ist, den zurückgegebenen Wert zu hacken, was eine Sicherheitslücke sein könnte. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Ich habe in einigen Skripten logname verwendet und fand es nützlich, weil es immer den gleichen Wert (meinen Anmeldenamen) zurückgab, unabhängig davon, ob ich es von einem aus anrief meine eigene Ebene oder von einem Sudo-Aufruf, während die Umgebungsvariablen $ USER und $ LOGNAME dies nicht tun. Ich habe mir keine Sorgen gemacht, dass sich jemand in meinen Computer hackt und den zurückgegebenen Wert ändert. Leider ... habe ich eine Problemumgehung gefunden. Ich habe eine Datei in meinem Home-Verzeichnis als solche erstellt
Wenn ich auf meinen Lognamen zugreifen möchte (z. B. einer Bash-Variablen g_logname zuweisen), gehe ich folgendermaßen vor:
Dies funktioniert für mich, ob als ich selbst oder auf der Root-Ebene durch sudo, das die Zuweisung von "~" als mein Home-Verzeichnis beibehält. Ich kann eine .logname-Datei für das Home-Verzeichnis jedes Benutzers auf dem System erstellen. Ja, jemand könnte sich in meinen Computer hacken und diese Dateien ändern, aber ich mache mir darüber keine großen Sorgen. Ich möchte nur, dass meine Skripte funktionieren.
quelle