Wie erhalte ich den Namen des aktiven Benutzers über die Befehlszeile in OS X?

94

Wie erhalte ich den Namen des aktiven Benutzers über die Befehlszeile in OS X?

Lawrence Johnston
quelle

Antworten:

193

Da 'whoami' veraltet ist, ist es wahrscheinlich vorwärtskompatibler zu verwenden:

id -un
Kent
quelle
2
Inwiefern ist 'whoami' überholt? Wer hat es für veraltet erklärt?
Jonathan Leffler
2
@ Jonathan: Die Manpage für whoamiLeopard bestätigt, dass sie durch ersetzt wurde id.
Naaff
Agh! Warum ändern sie etwas, das es seit Anbeginn der Zeit gibt?
dmckee --- Ex-Moderator Kätzchen
28
Wer bin ich zu sagen? <boom-chacka>
Kent
27

Wenn Sie den vollständigen Namen (anstelle des Benutzernamens) anzeigen möchten, fügen Sie das -FFlag hinzu:

$ id -F
Andrew Havens
Andrew
quelle
1
-F ist eine illegale Option in Mavericks - wann hat dies zum ersten Mal funktioniert?
Eli B.
11

Wer bin ich

BEARBEITEN

Das whoami-Dienstprogramm wurde durch das Dienstprogramm id (1) veraltet und entspricht id -un. Der Befehl id -pwird für die normale interaktive Verwendung empfohlen.

dfa
quelle
9

Über hier

Das Überprüfen des Besitzers von / dev / console scheint gut zu funktionieren.

stat -f "%Su" /dev/console

Lawrence Johnston
quelle
1
Dies funktioniert hervorragend, wenn Sie in einen Computer eingebunden sind und sehen möchten, ob ein Benutzer lokal angemeldet ist. Ist dies nicht der Fall, gibt der Befehl "root" zurück.
Tim Dearborn
9

Ich bin mir ziemlich sicher, dass das Terminal in OS X genau wie Unix ist, daher lautet der Befehl:

whoami

Ich habe momentan keinen Mac bei mir, also korrigiert mich jemand, wenn ich falsch liege.

HINWEIS - Das whoamiDienstprogramm wurde veraltet und entspricht id -un. Es gibt Ihnen den aktuellen Benutzer

Eric Koslow
quelle
4

Wenn Sie wissen möchten, wer gerade am System angemeldet ist:

$ w
 15:56:14 bis 5 Tage, 20:58, 6 Benutzer, Lastdurchschnitt: 0,43, 0,53, 0,50
USER TTY LOGIN @ IDLE JCPU PCPU WAS
me pts / 2 Fr19 1: 03m 0,98s 0,98s - / bin / bash
me pts / 3 09:55 6: 00m 0,43s 0,43s / bin / bash
me pts / 5 15:56 0.00s 0.23s 0.00sw

(Dies ist von einem Linux-System; die Formatierung unter OS X kann geringfügig abweichen, die Informationen sollten jedoch ungefähr gleich sein.)

Es kann mehrere Anmeldesitzungen geben. Schließlich ist UNIX als Mehrbenutzersystem konzipiert.

kurzlebig
quelle
4

Sie können auch den lognameBefehl aus dem BSD General Commands Manual unter Linux oder MacOS verwenden, um den Benutzernamen des aktuell angemeldeten Benutzers anzuzeigen, selbst wenn der Benutzer einen sudoVorgang ausführt . Dies ist beispielsweise nützlich, wenn Sie die Crontab eines Benutzers ändern, während Sie ein systemweites Paket mit sudo installieren:crontab -u $(logname)

Per man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
Adam Link
quelle
1
Dies ist definitiv die sauberste und einfachste Lösung. Es funktioniert unabhängig davon, welcher Benutzer den Befehl ausführt.
Maxime Viargues
2

Die Frage wurde meiner Meinung nach nicht vollständig beantwortet. Ich werde versuchen zu erklären: Ich habe einen Crontab-Eintrag, der eine Bash-Shell-Befehlsprozedur plant, die wiederum einige Bereinigungen meiner Dateien durchführt. Wenn Sie fertig sind, senden Sie mir eine Benachrichtigung über das OS X-Benachrichtigungscenter (mit dem Befehl osascript -e 'display notification ...). Wenn jemand (z. B. meine Frau oder meine Tochter) den aktuellen Benutzer des Computers zu ihr wechselt und mich im Hintergrund lässt, schlägt das Cron-Skript beim Senden der Benachrichtigung fehl .

Also, wer ist der aktuelle Benutzer Mittel hat einige andere Leute die effektive Benutzer werden ließ mich im Hintergrund ? Haben stat -f "%Su" /dev/consolekehrt die aktuellen aktiven Benutzername?

Die Antwort ist ja; Jetzt wurde mein Crontab-Shell-Skript folgendermaßen geändert:

...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
  'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi
Maurizio Loreti
quelle
2

Benutzername im MAC-Terminal zu bekommen ist einfach ...

Ich benutze whoamiin der Regel in Terminal ...

In diesem Fall brauchte ich das zum Beispiel, um Tomcat Server zu installieren ...

Geben Sie hier die Bildbeschreibung ein

Alireza
quelle
2

Es gibt zwei Möglichkeiten:

whoami

oder

echo $USER
Manas Sharma
quelle
1

Sie können es auch aus den Umgebungsvariablen abrufen, aber das ist wahrscheinlich nicht sicher, daher würde ich Andrews Antwort folgen.

printenv USER

Wenn Sie es aus einer App wie Node abrufen müssen, ist es einfacher, es aus Umgebungsvariablen wie z

process.env.USER.

Was wäre cool
quelle
1

Definieren Sie 'aktiver Benutzer'.

Wenn die Frage "Wer ist der angemeldete Benutzer" lautet, ist "Wer bin ich" oder "Whoami" in Ordnung (obwohl sie unterschiedliche Antworten geben - "Whoami" meldet nur einen Benutzernamen; "Wer bin ich" meldet auf dem Terminal und Anmeldezeit auch).

Wenn die Frage lautet, welche Benutzer-ID die effektive ID für die Shell ist, ist es häufig besser, die ID zu verwenden. Dies berichtet über die tatsächliche und effektive Benutzer-ID und Gruppen-ID sowie über die zusätzlichen Gruppen-IDs. Dies kann von Bedeutung sein, wenn auf der Shell SUID oder SGID ausgeführt wird.

Jonathan Leffler
quelle