522 Stimmen

Wie erhalte ich den Benutzernamen des aktuellen Benutzers in Bash?

Wie kann ich den Benutzernamen des aktuellen Benutzers in Bash erhalten? Verwende ich whoami?

10voto

OldManRiver Punkte 132

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

7voto

Lin-man Punkte 71

In Solaris OS habe ich diesen Befehl verwendet:

$ who am i     # Denk daran, es mit einem Leerzeichen zu verwenden.

Auf Linux hat jemand das bereits in den Kommentaren beantwortet.

$ whoami       # Ohne Leerzeichen

7voto

Frank Nocke Punkte 8618
REALUSER="${SUDO_USER:-${USER}}"

...erhält den normalen Benutzer (falls nicht mit sudo) oder den normalen Benutzer hinter dem aktuellen sudo-Aufruf.

5voto

Crestwave Punkte 51

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

4voto

Fred Mitchell Punkte 2061

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)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X