it-swarm.com.de

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

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

49

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

id -un
118
kent

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

$ id -F
Andrew Havens
21
Andrew

Wer bin ich

EDIT

Das Dienstprogramm whoami wurde vom Dienstprogramm id (1) verworfen und entspricht id -un. Der Befehl id -p wird für die normale interaktive Verwendung vorgeschlagen.

8
dfa

Über hier

Die Überprüfung des Besitzers von/dev/console scheint gut zu funktionieren.

stat -f "%Su" /dev/console

7

Ich bin mir ziemlich sicher, dass das Terminal in OS X genau wie Unix ist. Der Befehl wäre also:

whoami

Ich habe im Moment keinen Mac bei mir, also korrigiert mich jemand, falls ich falsch liege.

5
Eric Koslow

Wenn Sie wissen möchten, wer aktuell 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 WHAT
me pts/2 Fri19 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.00s w 

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

Es kann mehrere Anmeldesitzungen geben. Schließlich ist UNIX als Multi-User-System konzipiert.

2
ephemient

Die Frage wurde nicht vollständig beantwortet, IMHO. Ich werde versuchen zu erklären: Ich habe einen crontab-Eintrag, der eine bash-Shell-Befehlsprozedur plant, die wiederum eine Bereinigung meiner Dateien vornimmt; und sendet dann eine Benachrichtigung an mich ü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 fehl, wenn die Benachrichtigung gesendet wird.

Wer ist der aktuelle Benutzer bedeutet Sind einige andere Benutzer der effektive Benutzer, der mich im Hintergrund verlässt? Gibt stat -f "%Su" /dev/console den aktuellen aktiven Benutzer Namen zurück?

Die Antwort ist ja; Nun 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
2
Maurizio Loreti

Sie können auch den Befehl logname aus dem BSD General Commands Manual unter Linux oder MacOS verwenden, um den Benutzernamen des aktuell angemeldeten Benutzers anzuzeigen, selbst wenn der Benutzer eine Sudo-Operation 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
1
Adam Link

Definieren Sie "aktiven Benutzer".

Wenn die Frage "wer ist der angemeldete Benutzer" ist, dann ist "wer bin ich" oder "whoami" in Ordnung (obwohl sie unterschiedliche Antworten geben - "whoami" meldet nur einen Benutzernamen; "wer bin ich" meldet sich am Terminal und Anmeldezeit auch).

Wenn die Frage "Welche Benutzer-ID ist die effektive ID für die Shell" lautet, ist es häufig besser, "ID" zu verwenden. Dieser berichtet über die tatsächliche und effektive Benutzer-ID und Gruppen-ID sowie über die ergänzenden Gruppen-IDs. Dies kann von Bedeutung sein, wenn die Shell SUID oder SGID ausführt.

1

den Benutzernamen im MAC-Terminal abzurufen, ist einfach ...

Ich verwende whoami normalerweise in terminal ...

In diesem Fall musste ich zum Beispiel Tomcat Server installieren ...

 enter image description here

0
Alireza

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

printenv USER

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

process.env.USER.

0