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 whoamidiese Variablen verwenden sollte, anstatt sie nur zu lesen.
USERund USERNAMEsind 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 whoamiundsudo echo $USER
sudo echo $USERdie Shell expandiert $USERund 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 whoamidie EUID mit , Notiz , die sudo whoamiAusgabe würde , rootwenn auch whoamidie UID verwendet. sudoSä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 -umit sudo id -ru.
manSeite ansehen,whoamiwird der Name angezeigt, der Ihrer effektiven Benutzer-ID zugeordnet ist. Dies bedeutet, dass etwas anderes zurückgegeben wird, wenn Siesudoeine Setuid-Programmdatei verwenden oder ausführen. Wenn Siesudoeingerichtet haben, versuchen Sie essudo whoamizum Beispiel.