Stimmen diese Variablen auch immer mit dem aktuell angemeldeten Benutzernamen überein (auf meinem Debian-System)? Kann ich ihre Verfügbarkeit in anderen Unix-ähnlichen Systemen annehmen?
Ich bin auch neugierig, warum man whoami
diese Variablen verwenden sollte, anstatt sie nur zu lesen.
USER
und USERNAME
sind gewöhnliche Umgebungsvariablen, was bedeutet, dass Sie sie, wenn Sie möchten, auf beliebige Werte setzen können. Einfach tippen USER=xyz
. Mit anderen Worten, auch wenn diese Variablen existieren, gibt es keine Garantie dafür, dass ihre Werte mit dem aktuell angemeldeten Benutzernamen übereinstimmen.
guarantee
, meinte ich standardmäßig (dh vorausgesetzt Benutzer hat sie nicht geändert).
sudo whoami
undsudo echo $USER
sudo echo $USER
die Shell expandiert $USER
und ruft dann aufsudo
. Natürlich wird nicht die gleiche Ausgabe wie erzeugt whoami
. Wie sudo whoami
, sudo sh -c 'echo $USER'
gibt (normalerweise) aus root
. In Bezug auf Ihre Kommentare über whoami
die EUID mit , Notiz , die sudo whoami
Ausgabe würde , root
wenn auch whoami
die UID verwendet. sudo
Sätze sowohl EUID und UID für den Befehl es (außer in der sehr ungewöhnlichen Situation , dass Sie konfigurieren es ausdrücklich anders verhalten) läuft. Vergleichen Sie sudo id -u
mit sudo id -ru
.
man
Seite ansehen,whoami
wird der Name angezeigt, der Ihrer effektiven Benutzer-ID zugeordnet ist. Dies bedeutet, dass etwas anderes zurückgegeben wird, wenn Siesudo
eine Setuid-Programmdatei verwenden oder ausführen. Wenn Siesudo
eingerichtet haben, versuchen Sie essudo whoami
zum Beispiel.