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


Antworten:


193

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

id -un

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

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.


9

Über hier

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

stat -f "%Su" /dev/console


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


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.


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

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

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



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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.