Wie kann ich den Benutzernamen des aktuellen Benutzers in Bash erhalten? Verwende ich whoami
?
Antworten
Zu viele Anzeigen?Wenn Root (sudo) Berechtigungen erforderlich sind, was in der Regel 90%+ der Fall ist, wenn Skripte verwendet werden, geben die Methoden in den vorherigen Antworten immer root
als Antwort.
Um den aktuellen "angemeldeten" Benutzer zu erhalten, ist es genauso einfach, aber es erfordert den Zugriff auf verschiedene Variablen: $SUDO_UID
und $SUDO_USER
.
Sie können ausgegeben werden:
echo $SUDO_UID
echo $SUDO_USER
Oder zugewiesen werden, zum Beispiel:
myuid=$SUDO_UID
myuname=$SUDO_USER
Der Benutzername des aktuellen Benutzers kann in reinem Bash mit der Parametererweiterung ${parameter @ Operator}
(eingeführt in Bash 4.4) abgerufen werden:
$: \\u
$ printf '%s\n' "${_@P}"
Das eingebaute :
(Synonym von true
) wird anstelle einer temporären Variablen verwendet, indem das letzte Argument gesetzt wird, das in $_
gespeichert ist. Dann erweitern wir es (\u
), als ob es ein Prompt-String mit dem Operator P
wäre.
Dies ist besser als die Verwendung von $USER
, da $USER
nur eine reguläre Umgebungsvariable ist; sie kann geändert, zurückgesetzt usw. werden. Selbst wenn sie nicht absichtlich manipuliert wird, ist ein häufiger Fall, in dem sie immer noch falsch ist, wenn der Benutzer ohne Starten einer Anmeldeshell gewechselt wird (Standard von su
).
Für Bash, KornShell (ksh
), sh
, etc. Viele Ihrer Fragen werden schnell beantwortet durch:
man [Funktion]
um die Dokumentation für das System, das Sie verwenden, zu erhalten oder in der Regel bequemer:
google "man Funktion"
Dies kann für einige Dinge unterschiedliche Ergebnisse liefern, wo Linux und Unix geringfügige Unterschiede aufweisen.
Für diese Frage geben Sie einfach "whoami" in Ihre Shell ein.
Um es zu skripten:
myvar=$(whoami)