Wie kann ich den Benutzernamen des aktuellen Benutzers in Bash erhalten? Verwende ich whoami
?
Antworten
Zu viele Anzeigen?Verwenden Sie den Standard-Unix/Linux/BSD/MacOS-Befehl logname
, um den angemeldeten Benutzer abzurufen. Dies ignoriert die Umgebung sowie sudo, da diese unzuverlässige Berichterstatter sind. Es druckt immer den Namen des angemeldeten Benutzers aus und beendet dann. Dieser Befehl existiert seit etwa 1981.
My-Mac:~ devin$ logname
devin
My-Mac:~ devin$ sudo logname
Passwort:
devin
My-Mac:~ devin$ sudo su -
My-Mac:~ root# logname
devin
My-Mac:~ root# echo $USER
root
Ein Hack, den ich bei Solaris 9 und Linux verwendet habe und der für beide gut funktioniert:
ps -o user= -p $$ | awk '{print $1}'
Dieser Abschnitt gibt den Namen des Benutzers mit der aktuellen EUID aus.
HINWEIS: Sie benötigen hier Bash als Interpreter.
Auf Solaris gibt es Probleme mit den oben beschriebenen Methoden:
id
akzeptiert die Parameter-u
und-n
nicht (Sie müssen also die Ausgabe analysieren)whoami
existiert nicht (standardmäßig)who am I
gibt den Besitzer des aktuellen Terminals aus (ignoriert EUID)- Die Variable
$USER
wird erst korrekt gesetzt, nachdem die Profildateien gelesen wurden (zum Beispiel/etc/profile
)
- See previous answers
- Weitere Antworten anzeigen