2009-07-09 13 views

Antwort

78

als ‚whoami‘ veraltet ist, ist es wahrscheinlich mehr vorwärtskompatibel zu verwenden:

id -un 
+1

In welchem ​​Sinn ist 'whoami' veraltet? Wer hat es für obsolet erklärt? –

+3

Typ 'man whoami' – kent

+0

@ Jonathan: Die Manpage für 'whoami' auf Leopard bestätigt, dass sie durch 'id' ersetzt wurde. – Naaff

6

Via here

Überprüfung der Besitzer von/dev/console scheint gut zu funktionieren.

stat -f "%Su" /dev/console

+0

Dies funktioniert gut, wenn Sie in eine Maschine ssh'ed sind und wollen, um zu sehen, ob ein Benutzer lokal angemeldet ist. Ist dies nicht der Fall, gibt der Befehl "root" zurück. –

7

whoami

EDIT

Die Whoami Dienstprogramm durch die ID (1) Utility holt worden ist, und ist zu id -un äquivalent. Der Befehl id -p wird für die normale interaktive Verwendung vorgeschlagen.

4

Ich bin mir ziemlich sicher, dass das Terminal in OS X wie Unix ist, so dass der Befehl wäre:

whoami 

Ich habe keinen Mac auf mich im Moment so jemand mich korrigieren, wenn ich 'Ich liege falsch.

+0

ja, OSX 10.5 ist (endlich) ein voll qualifizierter Unix. – kent

0

definieren ‚aktive Benutzer‘.

Wenn die Frage ist "wer ist der angemeldete Benutzer", dann ist "Wer bin ich" oder "Whoami" in Ordnung (obwohl sie unterschiedliche Antworten geben - "Whoami" meldet nur einen Benutzernamen; "Wer bin ich" Berichte über Terminal und Login-Zeit auch).

Wenn die Frage ist, welche Benutzer-ID die effektive ID für die Shell ist, dann ist es oft besser, "ID" zu verwenden. Dieser meldet die tatsächliche und effektive Benutzer-ID und Gruppen-ID sowie die zusätzlichen Gruppen-IDs. Dies kann von Bedeutung sein, wenn die Shell SUID oder SGID ausführt.

1

Wenn Sie wissen wollen, wer zur Zeit im System angemeldet ist:

 
$ w 
15:56:14 up 5 days, 20:58, 6 users, load average: 0.43, 0.53, 0.50 
USER  TTY  [email protected] 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 aus einem Linux-System, das die Formatierung auf OS X kann etwas unterschiedlich sein, aber die Informationen sollten etwa gleich sein .)

Es kann mehrere Anmeldesitzungen geben; UNIX ist schließlich dafür ausgelegt, ein Mehrbenutzersystem zu sein.

12

Wenn Sie den vollständigen Namen anzeigen möchten (anstelle des Benutzername), fügen Sie die -F Flagge:

$ id -F 
Andrew Havens 
+0

-F ist eine illegale Option in Mavericks - wann hat das zuerst angefangen zu arbeiten? –

0

Die Frage, IMHO nicht vollständig beantwortet. Ich werde versuchen zu erklären: Ich habe einen Crontab-Eintrag, der eine Bash-Shell-Befehlsprozedur einplant, die wiederum einige meiner Dateien bereinigt; und, wenn Sie fertig sind, sendet eine Benachrichtigung an mich mit dem 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 belässt, schlägt das Cron-Skript beim Senden der Benachrichtigung fehl.

So Wer ist der aktuelle Benutzer bedeutet Hat einige andere Leute die effektive Benutzer werden mich im Hintergrund verlassen? Gibt stat -f "%Su" /dev/console den aktuellen aktiven Benutzer Name zurück?

Die Antwort ist ja; so, jetzt mein crontab Shell-Skript wurde auf folgende Weise 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 
Verwandte Themen